diff --git a/.github/workflows/clang-tidy.yaml b/.github/workflows/clang-tidy.yaml index f310fd38..97807c85 100644 --- a/.github/workflows/clang-tidy.yaml +++ b/.github/workflows/clang-tidy.yaml @@ -25,6 +25,17 @@ jobs: spack external find spack install googletest spack install trilinos@master~mpi~epetra+basker + - name: Cache install yaml-cpp + id: cache-yaml-cpp + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/spack + key: linux-yaml-cpp + - name: Install yaml-cpp + if: steps.cache-yaml-cpp.outputs.cache-hit != 'true' + run: | + source spack/share/spack/setup-env.sh + spack install yaml-cpp - name: Clone uses: actions/checkout@v4 with: @@ -35,6 +46,7 @@ jobs: source spack/share/spack/setup-env.sh spack load trilinos spack load googletest + spack load yaml-cpp cd openturbine mkdir build-clangtidy cd build-clangtidy diff --git a/.github/workflows/correctness-linux.yaml b/.github/workflows/correctness-linux.yaml index feaab266..b2ca817f 100644 --- a/.github/workflows/correctness-linux.yaml +++ b/.github/workflows/correctness-linux.yaml @@ -30,6 +30,17 @@ jobs: spack external find spack install googletest spack install trilinos@master~mpi~epetra+basker + - name: Cache install yaml-cpp + id: cache-yaml-cpp + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/spack + key: linux-yaml-cpp + - name: Install yaml-cpp + if: steps.cache-yaml-cpp.outputs.cache-hit != 'true' + run: | + source spack/share/spack/setup-env.sh + spack install yaml-cpp - name: Clone uses: actions/checkout@v4 with: @@ -40,6 +51,7 @@ jobs: source spack/share/spack/setup-env.sh spack load trilinos spack load googletest + spack load yaml-cpp cd openturbine mkdir build cd build @@ -47,7 +59,7 @@ jobs: -DOpenTurbine_ENABLE_SANITIZER_ADDRESS=ON \ -DOpenTurbine_ENABLE_SANITIZER_LEAK=ON \ -DOpenTurbine_ENABLE_SANITIZER_UNDEFINED=ON \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} cmake --build . cp src/*.dll tests/unit_tests/ ctest --output-on-failure diff --git a/.github/workflows/correctness-macos.yaml b/.github/workflows/correctness-macos.yaml index 3df0f26c..bebde335 100644 --- a/.github/workflows/correctness-macos.yaml +++ b/.github/workflows/correctness-macos.yaml @@ -28,6 +28,17 @@ jobs: spack external find spack install googletest spack install trilinos@master~mpi~epetra+basker + - name: Cache install yaml-cpp + id: cache-yaml-cpp + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/spack + key: macos-yaml-cpp + - name: Install yaml-cpp + if: steps.cache-yaml-cpp.outputs.cache-hit != 'true' + run: | + source spack/share/spack/setup-env.sh + spack install yaml-cpp - name: Clone uses: actions/checkout@v4 with: @@ -38,13 +49,14 @@ jobs: source spack/share/spack/setup-env.sh spack load trilinos spack load googletest + spack load yaml-cpp cd openturbine mkdir build cd build cmake .. \ -DOpenTurbine_ENABLE_SANITIZER_ADDRESS=ON \ -DOpenTurbine_ENABLE_SANITIZER_UNDEFINED=ON \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} cmake --build . cp src/*.dll tests/unit_tests/ ctest --output-on-failure diff --git a/.github/workflows/cppcheck.yaml b/.github/workflows/cppcheck.yaml index eac6b8a9..a5252d2c 100644 --- a/.github/workflows/cppcheck.yaml +++ b/.github/workflows/cppcheck.yaml @@ -26,6 +26,17 @@ jobs: spack external find spack install googletest spack install trilinos@master~mpi~epetra+basker + - name: Cache install yaml-cpp + id: cache-yaml-cpp + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/spack + key: linux-yaml-cpp + - name: Install yaml-cpp + if: steps.cache-yaml-cpp.outputs.cache-hit != 'true' + run: | + source spack/share/spack/setup-env.sh + spack install yaml-cpp - name: Clone uses: actions/checkout@v4 with: @@ -36,6 +47,7 @@ jobs: source spack/share/spack/setup-env.sh spack load trilinos spack load googletest + spack load yaml-cpp sudo apt-get install cppcheck cd openturbine mkdir build-cppcheck diff --git a/Dependencies.cmake b/Dependencies.cmake index ed6326da..9338e612 100644 --- a/Dependencies.cmake +++ b/Dependencies.cmake @@ -2,6 +2,7 @@ function(openturbine_setup_dependencies) # Find and link required packages find_package(KokkosKernels REQUIRED) find_package(Amesos2 REQUIRED) + find_package(yaml-cpp REQUIRED) # Optionally find and link MKL if available if(TARGET Kokkos::MKL) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1327ef05..503aad2b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,6 +19,7 @@ target_link_libraries(openturbine_library PRIVATE target_link_system_libraries(openturbine_library PRIVATE KokkosKernels::kokkoskernels Amesos2::amesos2 + yaml-cpp ${FS_LIB} ) diff --git a/src/utilities/controllers/discon_rotor_test_controller.cpp b/src/utilities/controllers/discon_rotor_test_controller.cpp index a578c4bc..227363a3 100644 --- a/src/utilities/controllers/discon_rotor_test_controller.cpp +++ b/src/utilities/controllers/discon_rotor_test_controller.cpp @@ -38,9 +38,6 @@ void PITCH_CONTROLLER( // If this is the first call, output the controller input and output file names if (first_call) { - std::cout << "controller input file: " << accINFILE << std::endl; - std::cout << "controller output file: " << avcOUTNAME << std::endl; - // Set first call to false first_call = false; } diff --git a/src/utilities/controllers/turbine_controller.cpp b/src/utilities/controllers/turbine_controller.cpp index 29a5d9d7..92185bca 100644 --- a/src/utilities/controllers/turbine_controller.cpp +++ b/src/utilities/controllers/turbine_controller.cpp @@ -60,7 +60,7 @@ void TurbineController::CallController() { if (status < 0) { throw std::runtime_error("Error raised in controller: " + message); } else if (status > 0) { - std::cout << "Warning from controller: " << message << std::endl; + std::cout << "Warning from controller: " << message << "\n"; } } diff --git a/src/utilities/scripts/IEA-15-240-RWT.yaml b/src/utilities/scripts/IEA-15-240-RWT.yaml new file mode 100644 index 00000000..a320e44f --- /dev/null +++ b/src/utilities/scripts/IEA-15-240-RWT.yaml @@ -0,0 +1,1010 @@ +name: IEA 15MW Offshore Reference Turbine, with taped chord tip design +assembly: + turbine_class: I + turbulence_class: B + drivetrain: direct_drive + rotor_orientation: Upwind + number_of_blades: 3 + hub_height: 150. + rotor_diameter: 241.94 + rated_power: 15.e+6 + lifetime: 25.0 +components: + blade: + outer_shape_bem: + airfoil_position: + grid: [0.0, 0.02, 0.15, 0.24517031675566095, 0.3288439506472435, 0.4391793464459161, 0.5376714071084352, 0.6382076569163737, 0.7717438522715817, 1.0] + labels: [circular, circular, SNL-FFA-W3-500, FFA-W3-360, FFA-W3-330blend, FFA-W3-301, FFA-W3-270blend, FFA-W3-241, FFA-W3-211, FFA-W3-211] + chord: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 0.985, 0.99, 0.995, 1.0] + values: [5.2, 5.208839941579524, 5.237887092263203, 5.293325313383697, 5.3673398548149205, 5.452092684226667, 5.5400317285038465, 5.621824261194381, 5.692531175149338, 5.74261089072697, 5.764836827022541, 5.756119529852528, 5.70309851275065, 5.604676021602162, 5.471559126660524, 5.322778014171772, 5.16648228816705, 5.019421327310202, 4.885807888739599, 4.767959675121795, 4.654566079625438, 4.54103105171191, 4.42817557762473, 4.316958876583997, 4.207880735790049, 4.101646187027423, 3.9987123353123564, 3.8994086760515647, 3.803172543681295, 3.7093894536544263, 3.6171117415725322, 3.525634918177657, 3.434082670567315, 3.341933111457596, 3.2486784477614132, 3.156109679927359, 3.0645800048338336, 2.9729926470824872, 2.8807051066906166, 2.786969376686517, 2.6910309386270574, 2.591965555977676, 2.4893236475052167, 2.383917231097341, 2.2759238162069977, 2.165466732053696, 2.0526250825584818, 1.9377533268191636, 1.819662967336163, 1.7799216728668075, 1.7077871948468315, 1.472482673397968, 0.5000000000000001] + twist: &id002 + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.27217629557079365, 0.27205736171561723, 0.26896980562529643, 0.26090151424382807, 0.24885698262522313, 0.23382423192614568, 0.21680513961749598, 0.1988727863224039, 0.18100767932828987, 0.16413076067279694, 0.1492522184680202, 0.1367143113540973, 0.12551282194274888, 0.11434749848233088, 0.10356776280240737, 0.0933068658568242, 0.0837118194006672, 0.07498970428955204, 0.06714203432398387, 0.06013256274855414, 0.053702278525950935, 0.047709665190988265, 0.04210143739978706, 0.03685595675838511, 0.03191153817565269, 0.027205903019809997, 0.022731811675977428, 0.018577762273585947, 0.014720912664231815, 0.011110140960669581, 0.00762759323174886, 0.00418280011853364, 0.0006925062977488528, -0.003016419809918337, -0.0071049531892497, -0.011874829529214339, -0.017440963696104015, -0.023047513564523475, -0.02833190814159476, -0.03288842847284285, -0.03641158408109318, -0.037768893627003246, -0.03797559234861602, -0.03761714725398, -0.036702695029715245, -0.035227785335510846, -0.033104414148684154, -0.030095161935387575, -0.026321748778324498, -0.021683756060763528] + pitch_axis: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.5045454545454545, 0.4900186808012221, 0.47270018284548393, 0.4540147730610375, 0.434647782591965, 0.4156278851950606, 0.3979378721273935, 0.38129960745617403, 0.3654920515699109, 0.35160780834472827, 0.34008443128769117, 0.3310670675965599, 0.3241031342163746, 0.3188472934612394, 0.3146895762675238, 0.311488897995355, 0.3088429219529899, 0.3066054031112312, 0.3043613335231313, 0.3018756624023877, 0.2992017656131912, 0.29648581499532917, 0.29397119399704474, 0.2918571873240831, 0.2901098902886204, 0.28880659979944606, 0.28802634398115073, 0.28784151044623507, 0.28794253614539367, 0.28852264941156663, 0.28957685074559625, 0.2911108045758606, 0.2930139151081327, 0.2952412111444283, 0.2977841397364215, 0.300565286724993, 0.3035753776130124, 0.30670446458784534, 0.30988253764299156, 0.3130107259708016, 0.31639042766652853, 0.32021109189825026, 0.32462311714967124, 0.329454188784972, 0.33463306413024474, 0.3401190402144396, 0.3460555975714659, 0.3527211856428439, 0.3600890296396286, 0.36818181818181805] + reference_axis: &id001 + x: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.018400065266506227, 0.04225083661157623, 0.0713435070518306, 0.1036164118664373, 0.13698065932882636, 0.16947761902506267, 0.19850810716711273, 0.22314347791028566, 0.24053558565655847, 0.24886598803245524, 0.2502470372487695, 0.24941257744761433, 0.24756615214432298, 0.24481686563607896, 0.24130290560673967, 0.23698965095246982, 0.23242285078249267, 0.22531163517427788, 0.2110134548882222, 0.18623119147117725, 0.1479307251853749, 0.09847131457569316, 0.04111540547132665, -0.02233952894219675, -0.08884150619038655, -0.15891966620096387, -0.2407441175807782, -0.3366430472730907, -0.44693576549987823, -0.5680658106768092, -0.6975208703059096, -0.8321262196998409, -0.9699653368698024, -1.1090930486685822, -1.255144506570033, -1.4103667735456449, -1.5733007007462756, -1.7434963771088456, -1.9194542609028804, -2.1000907378795275, -2.285501961499942, -2.4756894577736315, -2.6734165188032692, -2.8782701025304545, -3.090085737186208, -3.308459127246535, -3.533712868740941, -3.7641269864926348, -4.0] + y: + grid: [0.0, 1.0] + values: [0.0, 0.0] + z: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 2.387755102040816, 4.775510204081632, 7.163265306122448, 9.551020408163264, 11.938775510204081, 14.326530612244898, 16.714285714285715, 19.10204081632653, 21.489795918367346, 23.877551020408163, 26.265306122448976, 28.653061224489797, 31.04081632653061, 33.42857142857143, 35.81632653061224, 38.20408163265306, 40.59183673469388, 42.979591836734684, 45.36734693877551, 47.75510204081632, 50.14285714285714, 52.53061224489795, 54.91836734693877, 57.30612244897959, 59.69387755102041, 62.08163265306122, 64.46938775510203, 66.85714285714285, 69.24489795918367, 71.63265306122447, 74.0204081632653, 76.40816326530611, 78.79591836734693, 81.18367346938776, 83.57142857142857, 85.95918367346938, 88.3469387755102, 90.73469387755102, 93.12244897959182, 95.51020408163265, 97.89795918367345, 100.28571428571428, 102.6734693877551, 105.0612244897959, 107.44897959183673, 109.83673469387753, 112.22448979591836, 114.61224489795919, 117.0] + internal_structure_2d_fem: + reference_axis: *id001 + webs: + - name: web0 + rotation: + fixed: twist + grid: [0.0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.125, 0.15, 0.1690340633511322, 0.18806812670226436, 0.20710219005339656, 0.22613625340452875, 0.24517031675566095, 0.2660887252285566, 0.2870071337014522, 0.30792554217434787, 0.3288439506472435, 0.350911029806978, 0.3729781089667125, 0.39504518812644707, 0.41711226728618156, 0.4391793464459161, 0.45887775857841995, 0.47857617071092373, 0.49827458284342757, 0.5179729949759314, 0.5376714071084352, 0.5577786570700229, 0.5778859070316106, 0.5979931569931983, 0.618100406954786, 0.6382076569163737, 0.657284256252832, 0.6763608555892903, 0.6954374549257486, 0.7145140542622068, 0.7335906535986652, 0.7526672529351234, 0.7717438522715817, 0.8, 0.8187500000000001, 0.8375, 0.85625, 0.875, 0.89375, 0.9125, 0.9312499999999999, 0.95, 0.975, 1.0] + values: [-0.27217629557079365, -0.2721151609261069, -0.2692829996121141, -0.26160974693508077, -0.25004194631128646, -0.23552614115701065, -0.21467775307891476, -0.19255079961979954, -0.1759878586013097, -0.16057133469540177, -0.14711714321398614, -0.1357292521960968, -0.12536451335231813, -0.11391930868991773, -0.10288584723243112, -0.09240330785216998, -0.08263112720589656, -0.07331222604686127, -0.06502804112954641, -0.05771742601208772, -0.05096319090575163, -0.04469782752454605, -0.03947910486050121, -0.03456265676425803, -0.0299081112103219, -0.025446129064633893, -0.02121583510652544, -0.01724217523108515, -0.013528184408954813, -0.01004307189737569, -0.006635163107666419, -0.0032467588547257582, 3.369564839038511e-05, 0.0035492823924747176, 0.007421594235148177, 0.011928778895197866, 0.017136732150624685, 0.0223974077244561, 0.027490996670335385, 0.03379973253909251, 0.036799280794358936, 0.037810153747541306, 0.037988462925127336, 0.03771818081838972, 0.036975584119978255, 0.03575998726335209, 0.03405925501568549, 0.03168024471993639, 0.027365297139775716, 0.021683756060763528] + offset_y_pa: + grid: [0.1, 0.975] + values: [-0.35, -0.35] + start_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.20528324315541635, 0.2097556380134865, 0.214034201297075, 0.21859521544514496, 0.22544079600769645, 0.2600262599953903, 0.27325310403744485, 0.287036736327106, 0.29901531855266544, 0.31004427379885435, 0.31964630853682274, 0.327381221939197, 0.3332279257508938, 0.3404119921430249, 0.34536862450358796, 0.3483161845298215, 0.35087342593259435, 0.3541004018132578, 0.358143510233458, 0.36205656780675327, 0.3653808670486798, 0.3680072762780136, 0.37080869847411474, 0.37441862732222103, 0.3779001712687167, 0.3806367459556684, 0.382499122180323, 0.38387503752747754, 0.3856023866745639, 0.3873229946154009, 0.3888557122938616, 0.390149435947777, 0.39136648378757616, 0.3924310955228753, 0.39331444293528894, 0.39405844474889024, 0.3946944625752598, 0.3952672458224185, 0.3958134640671341, 0.39646716576057284, 0.3971471504083998, 0.39776245781144953, 0.39833240110413193, 0.39899014105047, 0.39981944363019767, 0.40090208432891433, 0.40224688844613343, 0.4037960986000614, 0.3131650477206493, 0.3090661411456019] + end_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.7080802577208776, 0.7036455102335815, 0.7010488685736092, 0.7010884514333167, 0.7014967820188778, 0.6761888726465278, 0.6729065942397168, 0.6680497867709726, 0.6631623793152429, 0.6592024850579787, 0.6555258143570273, 0.6521844205829048, 0.6495084856532908, 0.6446894785290086, 0.6419750975110313, 0.641249573695285, 0.6405155416597471, 0.6386928766049896, 0.6359428243808779, 0.6331279745265908, 0.6308742184379281, 0.6292625886697967, 0.6273358867997892, 0.624391758073666, 0.6214725158861021, 0.6193781744502277, 0.618031171163369, 0.6168982314610834, 0.6153329183257642, 0.6137641313361158, 0.6124519759406767, 0.6114109925636344, 0.6104065498164664, 0.609385032345621, 0.6084107897293662, 0.6075786906771415, 0.6069950920595479, 0.6066337715002371, 0.606485952430602, 0.6062452813018124, 0.6058817873790933, 0.6053821435852097, 0.604819981036594, 0.6041148785485133, 0.6031834986262846, 0.601942851287227, 0.6003789528645205, 0.5985219881262099, 0.6892746108093417, 0.6929001625242511] + - name: web1 + rotation: + fixed: twist + grid: [0.0, 0.02, 0.04, 0.06, 0.08, 0.1, 0.125, 0.15, 0.1690340633511322, 0.18806812670226436, 0.20710219005339656, 0.22613625340452875, 0.24517031675566095, 0.2660887252285566, 0.2870071337014522, 0.30792554217434787, 0.3288439506472435, 0.350911029806978, 0.3729781089667125, 0.39504518812644707, 0.41711226728618156, 0.4391793464459161, 0.45887775857841995, 0.47857617071092373, 0.49827458284342757, 0.5179729949759314, 0.5376714071084352, 0.5577786570700229, 0.5778859070316106, 0.5979931569931983, 0.618100406954786, 0.6382076569163737, 0.657284256252832, 0.6763608555892903, 0.6954374549257486, 0.7145140542622068, 0.7335906535986652, 0.7526672529351234, 0.7717438522715817, 0.8, 0.8187500000000001, 0.8375, 0.85625, 0.875, 0.89375, 0.9125, 0.9312499999999999, 0.95, 0.975, 1.0] + values: [-0.27217629557079365, -0.2721151609261069, -0.2692829996121141, -0.26160974693508077, -0.25004194631128646, -0.23552614115701065, -0.21467775307891476, -0.19255079961979954, -0.1759878586013097, -0.16057133469540177, -0.14711714321398614, -0.1357292521960968, -0.12536451335231813, -0.11391930868991773, -0.10288584723243112, -0.09240330785216998, -0.08263112720589656, -0.07331222604686127, -0.06502804112954641, -0.05771742601208772, -0.05096319090575163, -0.04469782752454605, -0.03947910486050121, -0.03456265676425803, -0.0299081112103219, -0.025446129064633893, -0.02121583510652544, -0.01724217523108515, -0.013528184408954813, -0.01004307189737569, -0.006635163107666419, -0.0032467588547257582, 3.369564839038511e-05, 0.0035492823924747176, 0.007421594235148177, 0.011928778895197866, 0.017136732150624685, 0.0223974077244561, 0.027490996670335385, 0.03379973253909251, 0.036799280794358936, 0.037810153747541306, 0.037988462925127336, 0.03771818081838972, 0.036975584119978255, 0.03575998726335209, 0.03405925501568549, 0.03168024471993639, 0.027365297139775716, 0.021683756060763528] + offset_y_pa: + grid: [0.1, 0.975] + values: [0.35, 0.35] + start_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.20528324315541635, 0.2097556380134865, 0.214034201297075, 0.21859521544514496, 0.22544079600769645, 0.21049664507316915, 0.2221524829466206, 0.23489094260768295, 0.2464402901027729, 0.25704110608788355, 0.26610208870577773, 0.2731575064757129, 0.27811470862196863, 0.28363187347682567, 0.28684464332054505, 0.28819636059157144, 0.2891309058769609, 0.2903750579306535, 0.29226545725488406, 0.2942414364091017, 0.2957434998949183, 0.2966240162898488, 0.29743274073730547, 0.29872361977733936, 0.29987061080676763, 0.30037495151387633, 0.3001535023809019, 0.2994117591475181, 0.298827519553128, 0.2981070707230933, 0.2970548514754858, 0.2957385169642028, 0.29426155346364713, 0.29240890212879467, 0.2901619718691776, 0.2876315287799329, 0.2848624595040138, 0.2818820047526827, 0.2787099966471504, 0.2753600461183012, 0.2716467012515975, 0.2673799096461699, 0.26247590233736284, 0.25700603896247765, 0.25096216551166967, 0.24429441187125944, 0.23684302837967156, 0.22838339181634582, 0.3131650477206493, 0.3090661411456019] + end_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.7080802577208776, 0.7036455102335815, 0.7010488685736092, 0.7010884514333167, 0.7014967820188778, 0.72644257193856, 0.7251577664798297, 0.72126525721117, 0.7165131474582784, 0.7128364931987339, 0.7096957702397008, 0.7071183083423042, 0.7054305232448042, 0.7021515188621643, 0.7009610615568496, 0.7015598004269967, 0.702584158734739, 0.7027824843897299, 0.7019583429960832, 0.7010163945237471, 0.7005850845804309, 0.7006799380712909, 0.7005868175868423, 0.6998365795372271, 0.6992426039535212, 0.6993988554511297, 0.7001942955932572, 0.7012212319673574, 0.7019864617769342, 0.7028820749437287, 0.7041382518976327, 0.7057052939823155, 0.7074485078117209, 0.7093898005592713, 0.7115965519922267, 0.7140900289099416, 0.7169370460528581, 0.7201287398105142, 0.7236820899656677, 0.7274079136833573, 0.731386467791719, 0.7356972916024903, 0.7405228051001613, 0.745836376011838, 0.751657201580099, 0.7580259971089817, 0.7650909530494675, 0.7730734039318857, 0.6892746108093417, 0.6929001625242511] + layers: + - name: UV_protection + material: Gelcoat + thickness: + grid: [0.0, 1.0] + values: [0.001, 0.001] + start_nd_arc: + values: [0.0, 0.0] + grid: [0.0, 1.0] + end_nd_arc: + values: [1.0, 1.0] + grid: [0.0, 1.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: Shell_skin + material: glass_triax + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.05, 0.044485585534082064, 0.03920631246744508, 0.03412448386439088, 0.02929392619207671, 0.024489505325564213, 0.019384558581206295, 0.014595881643786201, 0.010343166429891729, 0.007150009588491233, 0.005006698932577704, 0.003764433062961093, 0.0030198265169068604, 0.0024784377045354734, 0.0021584738459249457, 0.00204953240924978, 0.0020060989392585928, 0.0020006011392945207, 0.002000115115065172, 0.002000012940486307, 0.0020000009096608237, 0.00200000000005121, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.0019033104254005903, 0.0016891430845399399, 0.0013784275518661877, 0.0011538262554083136, 0.00103989912672171, 0.0010063268946716168, 0.0010007931283301417, 0.001, 0.001, 0.001] + start_nd_arc: + grid: [0.0, 0.25, 0.3, 1.0] + values: [0.0, 0.0, 0.01, 0.01] + end_nd_arc: + grid: [0.0, 0.25, 0.3, 1.0] + values: [1.0, 1.0, 0.99, 0.99] + - name: Spar_Cap_SS + material: CarbonUD + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0001, 0.0019253427544743858, 0.005878030418028014, 0.012205741402763814, 0.02033847241410345, 0.029710037581228265, 0.03976076813427265, 0.04984579196655636, 0.059506919810752144, 0.06813475896247266, 0.07517917278251993, 0.08001633865143198, 0.08380373783594258, 0.08756302399896077, 0.09096088968367966, 0.09394183001092273, 0.09623412699697585, 0.0977753527026025, 0.09836307921598017, 0.0981999062871899, 0.09757657895482426, 0.09649171896998379, 0.09504926405790153, 0.09340609597066436, 0.09163396600383901, 0.08985822612692451, 0.08812902603702513, 0.08640958344856942, 0.08462830823429666, 0.08272111871184405, 0.08063005694324227, 0.07831036719824715, 0.07574643418843892, 0.07276138579954894, 0.06913218672253638, 0.06421642597820243, 0.05743129735425094, 0.0499439766596495, 0.04210164910682022, 0.03453603307614619, 0.027794810383669103, 0.022532572295399025, 0.01866188117363215, 0.015066576723923265, 0.011738804201119217, 0.008673947426939258, 0.006002632716771239, 0.0038861394151689125, 0.0022342962473922592, 0.0010000000000001236] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + width: + grid: [0.0, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.9, 0.9, 0.8999999988390655, 0.8999995100671728, 0.8999891507887757, 0.8998321453405057, 0.8986596837575513, 0.8916444980356923, 0.8645530713991059, 0.7694187536403974, 0.585345108782866, 0.294] + offset_y_pa: + grid: [0.0, 1.0] + values: [0.0, 0.0] + rotation: + fixed: twist + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [-0.27217629557079365, -0.27205736171561723, -0.26896980562529643, -0.26090151424382807, -0.24885698262522313, -0.23382423192614568, -0.21680513961749598, -0.1988727863224039, -0.18100767932828987, -0.16413076067279694, -0.1492522184680202, -0.1367143113540973, -0.12551282194274888, -0.11434749848233088, -0.10356776280240737, -0.0933068658568242, -0.0837118194006672, -0.07498970428955204, -0.06714203432398387, -0.06013256274855414, -0.053702278525950935, -0.047709665190988265, -0.04210143739978706, -0.03685595675838511, -0.03191153817565269, -0.027205903019809997, -0.022731811675977428, -0.018577762273585947, -0.014720912664231815, -0.011110140960669581, -0.00762759323174886, -0.00418280011853364, -0.0006925062977488528, 0.003016419809918337, 0.0071049531892497, 0.011874829529214339, 0.017440963696104015, 0.023047513564523475, 0.02833190814159476, 0.03288842847284285, 0.03641158408109318, 0.037768893627003246, 0.03797559234861602, 0.03761714725398, 0.036702695029715245, 0.035227785335510846, 0.033104414148684154, 0.030095161935387575, 0.026321748778324498, 0.021683756060763528] + side: suction + start_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.17773570068243144, 0.18225456521002678, 0.18604187024451585, 0.1894208057544969, 0.19491682190018167, 0.2035111977739001, 0.21492220169188628, 0.22747556270503067, 0.23896542193889161, 0.24950552934239495, 0.2584881563049556, 0.2654445497010712, 0.27028298131884515, 0.2755557024298496, 0.27853854056668137, 0.2797315507100771, 0.2803739682779732, 0.28132580966028653, 0.2829133734335994, 0.2846153330288592, 0.2858639373398411, 0.28650712299101067, 0.2870579808532732, 0.2880476573408754, 0.2888847763645291, 0.2890483839399594, 0.2885148571593514, 0.28747185047725565, 0.28655673377511326, 0.28550374024630704, 0.28413177831399916, 0.28244810733149306, 0.2805381928509472, 0.27826960958187874, 0.27560086322100535, 0.27264537204392797, 0.26945777589404357, 0.2660506315331089, 0.26243484134157163, 0.2586163420238527, 0.2543899582712716, 0.2495513381795907, 0.24401076074009992, 0.23785709598249466, 0.23115648734884098, 0.22440217984963634, 0.21918975567204751, 0.2216384405804998, 0.23600864040444502, 0.16803069192449496] + end_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.23283078562840126, 0.23725671081694624, 0.24202653234963417, 0.247769625135793, 0.25596477011521124, 0.2670315296506249, 0.28048290011103555, 0.29437392634069215, 0.3063549936044512, 0.3174275310624229, 0.32712628947371525, 0.33499966400533804, 0.34101471043413073, 0.34844368466828257, 0.3535744166911581, 0.35673959597583377, 0.35957391722047566, 0.3630666080812486, 0.3673827139153765, 0.37160185085425845, 0.37516772313169205, 0.37803473496404505, 0.38098180499218165, 0.38481135235881964, 0.38863638997089717, 0.3916685151753782, 0.3938905104917509, 0.3956414284923102, 0.397758719075737, 0.39986558160974367, 0.40170376953297604, 0.4033136983977561, 0.404877478949584, 0.40633831361987416, 0.4076804199064265, 0.4089325042764648, 0.41010190909865124, 0.4112187187281146, 0.4123082768703506, 0.41353055625835794, 0.4148270473923564, 0.41612027080389463, 0.41744580885705135, 0.4189290910545292, 0.4205732866622497, 0.42192677200808987, 0.4212416759086072, 0.4121166202755468, 0.39032145503685356, 0.4501015903667088] + - name: Spar_Cap_PS + material: CarbonUD + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0001, 0.0019253427544743858, 0.005878030418028014, 0.012205741402763814, 0.02033847241410345, 0.029710037581228265, 0.03976076813427265, 0.04984579196655636, 0.059506919810752144, 0.06813475896247266, 0.07517917278251993, 0.08001633865143198, 0.08380373783594258, 0.08756302399896077, 0.09096088968367966, 0.09394183001092273, 0.09623412699697585, 0.0977753527026025, 0.09836307921598017, 0.0981999062871899, 0.09757657895482426, 0.09649171896998379, 0.09504926405790153, 0.09340609597066436, 0.09163396600383901, 0.08985822612692451, 0.08812902603702513, 0.08640958344856942, 0.08462830823429666, 0.08272111871184405, 0.08063005694324227, 0.07831036719824715, 0.07574643418843892, 0.07276138579954894, 0.06913218672253638, 0.06421642597820243, 0.05743129735425094, 0.0499439766596495, 0.04210164910682022, 0.03453603307614619, 0.027794810383669103, 0.022532572295399025, 0.01866188117363215, 0.015066576723923265, 0.011738804201119217, 0.008673947426939258, 0.006002632716771239, 0.0038861394151689125, 0.0022342962473922592, 0.0010000000000001236] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + width: + grid: [0.0, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.9, 0.9, 0.8999999988390655, 0.8999995100671728, 0.8999891507887757, 0.8998321453405057, 0.8986596837575513, 0.8916444980356923, 0.8645530713991059, 0.7694187536403974, 0.585345108782866, 0.294] + offset_y_pa: + grid: [0.0, 1.0] + values: [0.0, 0.0] + rotation: + fixed: twist + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [-0.27217629557079365, -0.27205736171561723, -0.26896980562529643, -0.26090151424382807, -0.24885698262522313, -0.23382423192614568, -0.21680513961749598, -0.1988727863224039, -0.18100767932828987, -0.16413076067279694, -0.1492522184680202, -0.1367143113540973, -0.12551282194274888, -0.11434749848233088, -0.10356776280240737, -0.0933068658568242, -0.0837118194006672, -0.07498970428955204, -0.06714203432398387, -0.06013256274855414, -0.053702278525950935, -0.047709665190988265, -0.04210143739978706, -0.03685595675838511, -0.03191153817565269, -0.027205903019809997, -0.022731811675977428, -0.018577762273585947, -0.014720912664231815, -0.011110140960669581, -0.00762759323174886, -0.00418280011853364, -0.0006925062977488528, 0.003016419809918337, 0.0071049531892497, 0.011874829529214339, 0.017440963696104015, 0.023047513564523475, 0.02833190814159476, 0.03288842847284285, 0.03641158408109318, 0.037768893627003246, 0.03797559234861602, 0.03761714725398, 0.036702695029715245, 0.035227785335510846, 0.033104414148684154, 0.030095161935387575, 0.026321748778324498, 0.021683756060763528] + side: pressure + start_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.6805327152478927, 0.6761444374301218, 0.67305653752105, 0.6719140417426687, 0.6709728079113629, 0.6692456742557923, 0.6658935927664663, 0.6609124375039913, 0.655899797966121, 0.651841625999659, 0.6480801580862996, 0.6446664660408865, 0.6418949159433542, 0.6368008414480475, 0.6336969361572485, 0.6327582617287505, 0.6318039479121142, 0.6296784591359483, 0.6266348090101735, 0.6234839962414657, 0.6209835056756122, 0.6191303928574808, 0.6169288326786739, 0.6136803133096191, 0.6104648159951769, 0.6080861240355949, 0.6064280054411249, 0.6049883293636273, 0.6030821244325189, 0.6011634961772104, 0.5995488438147025, 0.5981915513594037, 0.5968559735106158, 0.5954828158820523, 0.5941229247342835, 0.5928725625032272, 0.59184144126847, 0.5910068389342593, 0.5903710514571403, 0.5896105635968762, 0.5886706687789591, 0.5875138574501246, 0.5862079850507335, 0.5846855089476413, 0.5829439174673554, 0.5814365472749322, 0.5818992812699688, 0.5907133218309097, 0.6121182034931375, 0.5518647133031442] + end_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.7356278001938624, 0.7311465830370412, 0.7290411996261683, 0.7302628611239647, 0.7320207561263926, 0.7327660061325171, 0.7314542911856156, 0.7278108011396528, 0.7232893696316804, 0.7197636277196869, 0.7167182912550594, 0.7142215803451533, 0.7126266450586398, 0.7096888236864805, 0.7087328122817252, 0.7097663069945072, 0.7110038968546166, 0.7114192575569103, 0.7111041494919507, 0.7104705140668649, 0.7102872914674633, 0.7106580048305152, 0.7108526568175824, 0.7104440083275634, 0.710216429601545, 0.7107062552710138, 0.7118036587735244, 0.713157907378682, 0.7142841097331425, 0.7155253375406471, 0.7171208350336793, 0.7190571424256668, 0.7211952596092526, 0.7235515199200476, 0.7262024814197047, 0.7291596947357641, 0.7324855744730778, 0.7361749261292652, 0.7402444869859193, 0.7445247778313815, 0.7491077579000438, 0.7540827900744285, 0.759643033167685, 0.7657575040196758, 0.7723607167807642, 0.7789611394333859, 0.7839512015065284, 0.7811915015259567, 0.7664310181255459, 0.833935611745358] + - name: LE_reinforcement + material: glass_uni + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0029970845481049565, 0.0029679300291545196, 0.0029387755102040823, 0.0029096209912536446, 0.0028804664723032065, 0.0028513119533527687, 0.002822157434402331, 0.002793002915451894, 0.0027638483965014577, 0.0027346938775510204, 0.002705539358600584, 0.0026763848396501467, 0.0026472303206997085, 0.002618075801749271, 0.0025889212827988335, 0.0025597667638483966, 0.0025306122448979598, 0.002501457725947523, 0.002472303206997085, 0.002443148688046647, 0.0024139941690962093, 0.0023848396501457733, 0.0023556851311953364, 0.002326530612244899, 0.0022973760932944614, 0.0022682215743440237, 0.0022390670553935855, 0.0022099125364431487, 0.002180758017492712, 0.002151603498542275, 0.0021224489795918376, 0.0020932944606413995, 0.0020641399416909617, 0.002034985422740525, 0.0020058309037900876, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + midpoint_nd_arc: + fixed: LE + grid: [0.0, 1.0] + values: [0.0, 0.0] + width: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.7999735283820496, 0.7998325970130074, 0.7984778047921102, 0.7943075801410094, 0.7812145582381771, 0.7593886763210709, 0.7312551421192448, 0.7052091903532077, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + start_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.4999993345962153, 0.4999993055719888, 0.499932025396804, 0.49976687374045037, 0.499500879329084, 0.4708880162401706, 0.4696375463788885, 0.4688948238131244, 0.46889663993404546, 0.46945061063220406, 0.469685612674169, 0.4694085927649272, 0.4688520073539291, 0.46805778158201233, 0.46739960537250774, 0.46682450560323396, 0.46604125884886216, 0.4648976952209234, 0.4636728750199575, 0.46264269587880497, 0.46178437131694283, 0.46094994262306743, 0.4598529712929675, 0.45831397033804844, 0.4566434908343083, 0.45512220135020276, 0.4537394322616389, 0.45233444473263756, 0.450734072230367, 0.4489892456923073, 0.4471695043754867, 0.44533446424407436, 0.44347055197928353, 0.44141748434749767, 0.43927892353515546, 0.4372963567402792, 0.4360580519757577, 0.4356503368324961, 0.43595347267011436, 0.4361472464495469, 0.4968399840020571, 0.4968399840020575, 0.49683998400205703, 0.4968399840020572, 0.496839984002057, 0.4968399840020573, 0.4968399840020573, 0.4968399840020572, 0.4968399840020571, 0.4968399840020574] + end_nd_arc: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.4999993345962153, 0.4999993055719888, 0.499932025396804, 0.49976687374045037, 0.499500879329084, 0.527350533463926, 0.5279137227514656, 0.5283600359337124, 0.5287984814145428, 0.5298257232722289, 0.5306972866019554, 0.5312353610353866, 0.5317246554564051, 0.5328470991272861, 0.5340981619275982, 0.5352761013950177, 0.53644121346442, 0.537556182706223, 0.5387567332259816, 0.5399640450569376, 0.5411655142430326, 0.5423078199324314, 0.5433408149719972, 0.5443261436873322, 0.5453115918177466, 0.5463400957816862, 0.5474066796682162, 0.5484851807460195, 0.549580281386477, 0.5506442157931399, 0.5516779410145772, 0.5527705451918636, 0.553990704664652, 0.5552325111772755, 0.556459584068589, 0.5575784703047061, 0.5581394346315676, 0.5581381163648041, 0.5577264953339997, 0.5575327215545678, 0.4968399840020571, 0.4968399840020575, 0.49683998400205703, 0.4968399840020572, 0.496839984002057, 0.4968399840020573, 0.4968399840020573, 0.4968399840020572, 0.4968399840020571, 0.4968399840020574] + - name: TE_reinforcement_SS + material: glass_uni + side: suction + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.013972585306122443, 0.02111763836734694, 0.028262691428571428, 0.030560909387755103, 0.03024929306122449, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.02979387795918369, 0.02567143714285715, 0.021548996326530612, 0.017040055102040836, 0.01227344693877553, 0.007950654489795924, 0.006142817755102042, 0.004334981020408161, 0.003393495714285716, 0.002823303877551022, 0.0021512048979591865, 0.0011733844897959208, 0.00019556408163266077, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + width: + grid: [0.0, 0.08163265306122448, 0.1020408163265306, 0.7959183673469387, 0.8163265306122448, 1.0] + values: [0.0, 0.0, 0.75, 0.75, 0.0, 0.0] + start_nd_arc: + fixed: TE + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: TE_reinforcement_PS + material: glass_uni + side: pressure + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.013972585306122443, 0.02111763836734694, 0.028262691428571428, 0.030560909387755103, 0.03024929306122449, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.02979387795918369, 0.02567143714285715, 0.021548996326530612, 0.017040055102040836, 0.01227344693877553, 0.007950654489795924, 0.006142817755102042, 0.004334981020408161, 0.003393495714285716, 0.002823303877551022, 0.0021512048979591865, 0.0011733844897959208, 0.00019556408163266077, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + width: + grid: [0.0, 0.08163265306122448, 0.1020408163265306, 0.7959183673469387, 0.8163265306122448, 1.0] + values: [0.0, 0.0, 0.75, 0.75, 0.0, 0.0] + end_nd_arc: + fixed: TE + grid: [0.0, 1.0] + values: [1.0, 1.0] + - name: TE_SS_filler + material: medium_density_foam + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0598396501457726, 0.05823615160349855, 0.056632653061224496, 0.05502915451895044, 0.05342565597667638, 0.05182215743440232, 0.05021865889212827, 0.048615160349854226, 0.04701166180758018, 0.04540816326530612, 0.043804664723032086, 0.04220116618075804, 0.04059766763848397, 0.03899416909620991, 0.037390670553935856, 0.0357871720116618, 0.03418367346938775, 0.0325801749271137, 0.030976676384839655, 0.029373177842565597, 0.027769679300291537, 0.02616618075801749, 0.024562682215743446, 0.0229591836734694, 0.021355685131195342, 0.01975218658892129, 0.01814868804664723, 0.01654518950437318, 0.01494169096209913, 0.013338192419825076, 0.011734693877551031, 0.010131195335276979, 0.008527696793002927, 0.006924198250728873, 0.005320699708454824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + start_nd_arc: + fixed: TE_reinforcement_SS + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.05293360989727067, 0.054633915349291066, 0.05574863636305121, 0.056157976387966275, 0.056601668100023296, 0.05719844430729973, 0.05796259525355572, 0.05894310759607129, 0.06073998519869416, 0.06252989677039729, 0.06417337105479724, 0.0659999574520854, 0.07, 0.08, 0.08, 0.08, 0.08, 0.08, 0.09, 0.08312634467197344, 0.0855167760295157, 0.08781304444366622, 0.0901413150125455, 0.09266832108385312, 0.09530153446953053, 0.0979766593491474, 0.1007213258885525, 0.10361607174886396, 0.1067239200316628, 0.11006629723785093, 0.11357261019378072, 0.11720344433717307, 0.12097340599583813, 0.12489452960731581, 0.12909517852875438, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + end_nd_arc: + fixed: Spar_Cap_SS + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.17773570068243144, 0.18225456521002678, 0.18604187024451585, 0.1894208057544969, 0.19491682190018167, 0.2035111977739001, 0.21492220169188628, 0.22747556270503067, 0.23896542193889161, 0.24950552934239495, 0.2584881563049556, 0.2654445497010712, 0.27028298131884515, 0.2755557024298496, 0.27853854056668137, 0.2797315507100771, 0.2803739682779732, 0.28132580966028653, 0.2829133734335994, 0.2846153330288592, 0.2858639373398411, 0.28650712299101067, 0.2870579808532732, 0.2880476573408754, 0.2888847763645291, 0.2890483839399594, 0.2885148571593514, 0.28747185047725565, 0.28655673377511326, 0.28550374024630704, 0.28413177831399916, 0.28244810733149306, 0.2805381928509472, 0.27826960958187874, 0.27560086322100535, 0.27264537204392797, 0.26945777589404357, 0.2660506315331089, 0.26243484134157163, 0.2586163420238527, 0.2543899582712716, 0.2495513381795907, 0.24401076074009992, 0.23785709598249466, 0.23115648734884098, 0.22440217984963634, 0.21918975567204751, 0.2216384405804998, 0.23600864040444502, 0.16803069192449496] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: LE_SS_filler + material: medium_density_foam + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0598396501457726, 0.05823615160349855, 0.056632653061224496, 0.05502915451895044, 0.05342565597667638, 0.05182215743440232, 0.05021865889212827, 0.048615160349854226, 0.04701166180758018, 0.04540816326530612, 0.043804664723032086, 0.04220116618075804, 0.04059766763848397, 0.03899416909620991, 0.037390670553935856, 0.0357871720116618, 0.03418367346938775, 0.0325801749271137, 0.030976676384839655, 0.029373177842565597, 0.027769679300291537, 0.02616618075801749, 0.024562682215743446, 0.0229591836734694, 0.021355685131195342, 0.01975218658892129, 0.01814868804664723, 0.01654518950437318, 0.01494169096209913, 0.013338192419825076, 0.011734693877551031, 0.010131195335276979, 0.008527696793002927, 0.006924198250728873, 0.005320699708454824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + start_nd_arc: + fixed: Spar_Cap_SS + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.23283078562840126, 0.23725671081694624, 0.24202653234963417, 0.247769625135793, 0.25596477011521124, 0.2670315296506249, 0.28048290011103555, 0.29437392634069215, 0.3063549936044512, 0.3174275310624229, 0.32712628947371525, 0.33499966400533804, 0.34101471043413073, 0.34844368466828257, 0.3535744166911581, 0.35673959597583377, 0.35957391722047566, 0.3630666080812486, 0.3673827139153765, 0.37160185085425845, 0.37516772313169205, 0.37803473496404505, 0.38098180499218165, 0.38481135235881964, 0.38863638997089717, 0.3916685151753782, 0.3938905104917509, 0.3956414284923102, 0.397758719075737, 0.39986558160974367, 0.40170376953297604, 0.4033136983977561, 0.404877478949584, 0.40633831361987416, 0.4076804199064265, 0.4089325042764648, 0.41010190909865124, 0.4112187187281146, 0.4123082768703506, 0.41353055625835794, 0.4148270473923564, 0.41612027080389463, 0.41744580885705135, 0.4189290910545292, 0.4205732866622497, 0.42192677200808987, 0.4212416759086072, 0.4121166202755468, 0.39032145503685356, 0.4501015903667088] + end_nd_arc: + fixed: LE_reinforcement + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.4999993345962153, 0.4999993055719888, 0.499932025396804, 0.49976687374045037, 0.499500879329084, 0.4708880162401706, 0.4696375463788885, 0.4688948238131244, 0.46889663993404546, 0.46945061063220406, 0.469685612674169, 0.4694085927649272, 0.4688520073539291, 0.46805778158201233, 0.46739960537250774, 0.46682450560323396, 0.46604125884886216, 0.4648976952209234, 0.4636728750199575, 0.46264269587880497, 0.46178437131694283, 0.46094994262306743, 0.4598529712929675, 0.45831397033804844, 0.4566434908343083, 0.45512220135020276, 0.4537394322616389, 0.45233444473263756, 0.450734072230367, 0.4489892456923073, 0.4471695043754867, 0.44533446424407436, 0.44347055197928353, 0.44141748434749767, 0.43927892353515546, 0.4372963567402792, 0.4360580519757577, 0.4356503368324961, 0.43595347267011436, 0.4361472464495469, 0.4968399840020571, 0.4968399840020575, 0.49683998400205703, 0.4968399840020572, 0.496839984002057, 0.4968399840020573, 0.4968399840020573, 0.4968399840020572, 0.4968399840020571, 0.4968399840020574] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: LE_PS_filler + material: medium_density_foam + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0598396501457726, 0.05823615160349855, 0.056632653061224496, 0.05502915451895044, 0.05342565597667638, 0.05182215743440232, 0.05021865889212827, 0.048615160349854226, 0.04701166180758018, 0.04540816326530612, 0.043804664723032086, 0.04220116618075804, 0.04059766763848397, 0.03899416909620991, 0.037390670553935856, 0.0357871720116618, 0.03418367346938775, 0.0325801749271137, 0.030976676384839655, 0.029373177842565597, 0.027769679300291537, 0.02616618075801749, 0.024562682215743446, 0.0229591836734694, 0.021355685131195342, 0.01975218658892129, 0.01814868804664723, 0.01654518950437318, 0.01494169096209913, 0.013338192419825076, 0.011734693877551031, 0.010131195335276979, 0.008527696793002927, 0.006924198250728873, 0.005320699708454824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + start_nd_arc: + fixed: LE_reinforcement + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.4999993345962153, 0.4999993055719888, 0.499932025396804, 0.49976687374045037, 0.499500879329084, 0.527350533463926, 0.5279137227514656, 0.5283600359337124, 0.5287984814145428, 0.5298257232722289, 0.5306972866019554, 0.5312353610353866, 0.5317246554564051, 0.5328470991272861, 0.5340981619275982, 0.5352761013950177, 0.53644121346442, 0.537556182706223, 0.5387567332259816, 0.5399640450569376, 0.5411655142430326, 0.5423078199324314, 0.5433408149719972, 0.5443261436873322, 0.5453115918177466, 0.5463400957816862, 0.5474066796682162, 0.5484851807460195, 0.549580281386477, 0.5506442157931399, 0.5516779410145772, 0.5527705451918636, 0.553990704664652, 0.5552325111772755, 0.556459584068589, 0.5575784703047061, 0.5581394346315676, 0.5581381163648041, 0.5577264953339997, 0.5575327215545678, 0.4968399840020571, 0.4968399840020575, 0.49683998400205703, 0.4968399840020572, 0.496839984002057, 0.4968399840020573, 0.4968399840020573, 0.4968399840020572, 0.4968399840020571, 0.4968399840020574] + end_nd_arc: + fixed: Spar_Cap_PS + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.6805327152478927, 0.6761444374301218, 0.67305653752105, 0.6719140417426687, 0.6709728079113629, 0.6692456742557923, 0.6658935927664663, 0.6609124375039913, 0.655899797966121, 0.651841625999659, 0.6480801580862996, 0.6446664660408865, 0.6418949159433542, 0.6368008414480475, 0.6336969361572485, 0.6327582617287505, 0.6318039479121142, 0.6296784591359483, 0.6266348090101735, 0.6234839962414657, 0.6209835056756122, 0.6191303928574808, 0.6169288326786739, 0.6136803133096191, 0.6104648159951769, 0.6080861240355949, 0.6064280054411249, 0.6049883293636273, 0.6030821244325189, 0.6011634961772104, 0.5995488438147025, 0.5981915513594037, 0.5968559735106158, 0.5954828158820523, 0.5941229247342835, 0.5928725625032272, 0.59184144126847, 0.5910068389342593, 0.5903710514571403, 0.5896105635968762, 0.5886706687789591, 0.5875138574501246, 0.5862079850507335, 0.5846855089476413, 0.5829439174673554, 0.5814365472749322, 0.5818992812699688, 0.5907133218309097, 0.6121182034931375, 0.5518647133031442] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: TE_PS_filler + material: medium_density_foam + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0598396501457726, 0.05823615160349855, 0.056632653061224496, 0.05502915451895044, 0.05342565597667638, 0.05182215743440232, 0.05021865889212827, 0.048615160349854226, 0.04701166180758018, 0.04540816326530612, 0.043804664723032086, 0.04220116618075804, 0.04059766763848397, 0.03899416909620991, 0.037390670553935856, 0.0357871720116618, 0.03418367346938775, 0.0325801749271137, 0.030976676384839655, 0.029373177842565597, 0.027769679300291537, 0.02616618075801749, 0.024562682215743446, 0.0229591836734694, 0.021355685131195342, 0.01975218658892129, 0.01814868804664723, 0.01654518950437318, 0.01494169096209913, 0.013338192419825076, 0.011734693877551031, 0.010131195335276979, 0.008527696793002927, 0.006924198250728873, 0.005320699708454824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + start_nd_arc: + fixed: Spar_Cap_PS + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.7356278001938624, 0.7311465830370412, 0.7290411996261683, 0.7302628611239647, 0.7320207561263926, 0.7327660061325171, 0.7314542911856156, 0.7278108011396528, 0.7232893696316804, 0.7197636277196869, 0.7167182912550594, 0.7142215803451533, 0.7126266450586398, 0.7096888236864805, 0.7087328122817252, 0.7097663069945072, 0.7110038968546166, 0.7114192575569103, 0.7111041494919507, 0.7104705140668649, 0.7102872914674633, 0.7106580048305152, 0.7108526568175824, 0.7104440083275634, 0.710216429601545, 0.7107062552710138, 0.7118036587735244, 0.713157907378682, 0.7142841097331425, 0.7155253375406471, 0.7171208350336793, 0.7190571424256668, 0.7211952596092526, 0.7235515199200476, 0.7262024814197047, 0.7291596947357641, 0.7324855744730778, 0.7361749261292652, 0.7402444869859193, 0.7445247778313815, 0.7491077579000438, 0.7540827900744285, 0.759643033167685, 0.7657575040196758, 0.7723607167807642, 0.7789611394333859, 0.7839512015065284, 0.7811915015259567, 0.7664310181255459, 0.833935611745358] + end_nd_arc: + fixed: TE_reinforcement_PS + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [1.0, 1.0, 1.0, 1.0, 1.0, 0.9470662336618578, 0.9453660177075865, 0.9442513522131303, 0.943842124820028, 0.9433987605635342, 0.9428021448987299, 0.9420377631636658, 0.9410572525026728, 0.9392599867606584, 0.9374697929067749, 0.9358264389842321, 0.9340000392347191, 0.9318826737618435, 0.9296088918166757, 0.9275112406325062, 0.9255801797549688, 0.9237269899736468, 0.9217301465509097, 0.9193635874850464, 0.9168736553280266, 0.9144832239704843, 0.9121869555563338, 0.9098586849874545, 0.9073316789161469, 0.9046984655304695, 0.9020233406508527, 0.8992786741114475, 0.896383928251136, 0.8932760799683372, 0.8899337027621491, 0.8864273898062193, 0.8827965556628269, 0.8790265940041618, 0.8751054703926842, 0.8709048214712456, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: Shell_skin_inner + material: glass_triax + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.05, 0.044485585534082064, 0.03920631246744508, 0.03412448386439088, 0.02929392619207671, 0.024489505325564213, 0.019384558581206295, 0.014595881643786201, 0.010343166429891729, 0.007150009588491233, 0.005006698932577704, 0.003764433062961093, 0.0030198265169068604, 0.0024784377045354734, 0.0021584738459249457, 0.00204953240924978, 0.0020060989392585928, 0.0020006011392945207, 0.002000115115065172, 0.002000012940486307, 0.0020000009096608237, 0.00200000000005121, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.0019033104254005903, 0.0016891430845399399, 0.0013784275518661877, 0.0011538262554083136, 0.00103989912672171, 0.0010063268946716168, 0.0010007931283301417, 0.001, 0.001, 0.001] + start_nd_arc: + grid: [0.0, 0.2, 0.25, 1.0] + values: [0.0, 0.0, 0.08, 0.08] + end_nd_arc: + grid: [0.0, 0.2, 0.25, 1.0] + values: [1.0, 1.0, 0.92, 0.92] + - name: web0_skinLE + material: glass_biax + web: web0 + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.00199639855942377, 0.001960384153661465, 0.0019243697478991601, 0.0018883553421368549, 0.0018523409363745498, 0.0018163265306122445, 0.0017803121248499399, 0.0017442977190876353, 0.0017082833133253304, 0.0016722689075630256, 0.0016362545018007207, 0.0016002400960384157, 0.0015642256902761102, 0.0015282112845138051, 0.0014921968787515003, 0.0014561824729891959, 0.0014201680672268908, 0.001384153661464586, 0.0013481392557022811, 0.001312124849939976, 0.001276110444177671, 0.0012400960384153662, 0.001204081632653061, 0.0011680672268907562, 0.0011320528211284512, 0.0010960384153661466, 0.0010600240096038413, 0.0010240096038415364, 0.0009879951980792314, 0.0009519807923169266, 0.0009159663865546219, 0.000879951980792317, 0.000843937575030012, 0.000807923169267707, 0.0007719087635054024, 0.0007358943577430975, 0.0006998799519807925, 0.0006638655462184875, 0.0006278511404561825, 0.0005918367346938778, 0.0005558223289315727, 0.0005198079231692679, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: web0_filler + material: medium_density_foam + web: web0 + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.04290876350540216, 0.04199639855942377, 0.04108403361344538, 0.040171668667466985, 0.03925930372148859, 0.0383469387755102, 0.0374345738295318, 0.036522208883553405, 0.03560984393757503, 0.034697478991596635, 0.03378511404561824, 0.032872749099639845, 0.03196038415366145, 0.031048019207683072, 0.030135654261704684, 0.029223289315726292, 0.0283109243697479, 0.027398559423769512, 0.026486194477791127, 0.025573829531812732, 0.024661464585834337, 0.023749099639855952, 0.022836734693877557, 0.021924369747899162, 0.021012004801920763, 0.02009963985594237, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: web0_skinTE + material: glass_biax + web: web0 + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.00199639855942377, 0.001960384153661465, 0.0019243697478991601, 0.0018883553421368549, 0.0018523409363745498, 0.0018163265306122445, 0.0017803121248499399, 0.0017442977190876353, 0.0017082833133253304, 0.0016722689075630256, 0.0016362545018007207, 0.0016002400960384157, 0.0015642256902761102, 0.0015282112845138051, 0.0014921968787515003, 0.0014561824729891959, 0.0014201680672268908, 0.001384153661464586, 0.0013481392557022811, 0.001312124849939976, 0.001276110444177671, 0.0012400960384153662, 0.001204081632653061, 0.0011680672268907562, 0.0011320528211284512, 0.0010960384153661466, 0.0010600240096038413, 0.0010240096038415364, 0.0009879951980792314, 0.0009519807923169266, 0.0009159663865546219, 0.000879951980792317, 0.000843937575030012, 0.000807923169267707, 0.0007719087635054024, 0.0007358943577430975, 0.0006998799519807925, 0.0006638655462184875, 0.0006278511404561825, 0.0005918367346938778, 0.0005558223289315727, 0.0005198079231692679, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: web1_skinLE + material: glass_biax + web: web1 + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.00199639855942377, 0.001960384153661465, 0.0019243697478991601, 0.0018883553421368549, 0.0018523409363745498, 0.0018163265306122445, 0.0017803121248499399, 0.0017442977190876353, 0.0017082833133253304, 0.0016722689075630256, 0.0016362545018007207, 0.0016002400960384157, 0.0015642256902761102, 0.0015282112845138051, 0.0014921968787515003, 0.0014561824729891959, 0.0014201680672268908, 0.001384153661464586, 0.0013481392557022811, 0.001312124849939976, 0.001276110444177671, 0.0012400960384153662, 0.001204081632653061, 0.0011680672268907562, 0.0011320528211284512, 0.0010960384153661466, 0.0010600240096038413, 0.0010240096038415364, 0.0009879951980792314, 0.0009519807923169266, 0.0009159663865546219, 0.000879951980792317, 0.000843937575030012, 0.000807923169267707, 0.0007719087635054024, 0.0007358943577430975, 0.0006998799519807925, 0.0006638655462184875, 0.0006278511404561825, 0.0005918367346938778, 0.0005558223289315727, 0.0005198079231692679, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: web1_filler + material: medium_density_foam + web: web1 + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.04290876350540216, 0.04199639855942377, 0.04108403361344538, 0.040171668667466985, 0.03925930372148859, 0.0383469387755102, 0.0374345738295318, 0.036522208883553405, 0.03560984393757503, 0.034697478991596635, 0.03378511404561824, 0.032872749099639845, 0.03196038415366145, 0.031048019207683072, 0.030135654261704684, 0.029223289315726292, 0.0283109243697479, 0.027398559423769512, 0.026486194477791127, 0.025573829531812732, 0.024661464585834337, 0.023749099639855952, 0.022836734693877557, 0.021924369747899162, 0.021012004801920763, 0.02009963985594237, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + - name: web1_skinTE + material: glass_biax + web: web1 + thickness: + grid: [0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.00199639855942377, 0.001960384153661465, 0.0019243697478991601, 0.0018883553421368549, 0.0018523409363745498, 0.0018163265306122445, 0.0017803121248499399, 0.0017442977190876353, 0.0017082833133253304, 0.0016722689075630256, 0.0016362545018007207, 0.0016002400960384157, 0.0015642256902761102, 0.0015282112845138051, 0.0014921968787515003, 0.0014561824729891959, 0.0014201680672268908, 0.001384153661464586, 0.0013481392557022811, 0.001312124849939976, 0.001276110444177671, 0.0012400960384153662, 0.001204081632653061, 0.0011680672268907562, 0.0011320528211284512, 0.0010960384153661466, 0.0010600240096038413, 0.0010240096038415364, 0.0009879951980792314, 0.0009519807923169266, 0.0009159663865546219, 0.000879951980792317, 0.000843937575030012, 0.000807923169267707, 0.0007719087635054024, 0.0007358943577430975, 0.0006998799519807925, 0.0006638655462184875, 0.0006278511404561825, 0.0005918367346938778, 0.0005558223289315727, 0.0005198079231692679, 0.0, 0.0, 0.0] + fiber_orientation: + grid: [0.0, 1.0] + values: [0.0, 0.0] + root: {d_f: 0.03, sigma_max: 675000000.0} + joint: {position: 0.0, mass: 0.0, cost: 0.0} + elastic_properties_mb: + six_x_six: + reference_axis: *id001 + twist: *id002 + stiff_matrix: + grid: [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.075, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0] + values: + - [6740375994.200792, 2653738.5919261174, 0.0, 0.0, 0.0, 148446683.0081474, 6729088765.395921, 0.0, 0.0, 0.0, 38985021.66520424, 46051081603.60474, -1092494742.1422234, 18829097.30285156, 0.0, 149629012637.96594, -22581466.165237263, 0.0, 149729095916.4146, 0.0, 87489183048.03288] + - [6384592445.510168, -376400.6474385026, 0.0, 0.0, 0.0, -93807158.54721366, 6388480690.310746, 0.0, 0.0, 0.0, 16608264.93565775, 43751344063.19816, 582609637.8397082, 3336008.299362885, 0.0, 142328864112.50156, -232559270.06092423, 0.0, 143137826352.7965, 0.0, 83285587642.82162] + - [6033428473.028316, -5351360.127132061, 0.0, 0.0, 0.0, -302258358.414727, 6055417688.515367, 0.0, 0.0, 0.0, 5594870.114677965, 41569662567.47037, 2071574619.5397494, -39669072.53786528, 0.0, 135212838311.38753, -606773042.4005727, 0.0, 137008541712.70963, 0.0, 79106159653.8364] + - [5399937528.5606785, 2545105.3701622505, 0.0, 0.0, 0.0, -376430490.9109713, 5758216767.868562, 0.0, 0.0, 0.0, 19709135.853905857, 38669982721.7398, 2739604966.9813576, -139140684.30100253, 0.0, 123284345388.39743, -1348337968.6178887, 0.0, 119514275124.89417, 0.0, 69973323042.1117] + - [4800672070.892391, 6445969.845348487, 0.0, 0.0, 0.0, -410026336.0979204, 5468722459.955154, 0.0, 0.0, 0.0, 28462348.93837689, 36038990116.73735, 3310499851.237116, -201959858.66306534, 0.0, 112223397786.61401, -2131730557.8957243, 0.0, 104365370041.97543, 0.0, 61533150488.50107] + - [4245595846.60386, 6455163.702384659, 0.0, 0.0, 0.0, -423187047.4596364, 5195984070.294925, 0.0, 0.0, 0.0, 35814075.943787806, 33746441410.19616, 3921047165.837773, -248900545.30290735, 0.0, 102686583994.11134, -2938603122.299237, 0.0, 91978034767.20616, 0.0, 54135840079.7236] + - [3015180949.0747685, -6056529.370011804, 0.0, 0.0, 0.0, -335581833.17485225, 4552086385.17254, 0.0, 0.0, 0.0, 53346766.10196565, 29212071034.730743, 5225114500.366909, -316621483.96654403, 0.0, 82456226297.96957, -4823615805.899531, 0.0, 68686121530.687454, 0.0, 38418612295.439545] + - [2419253237.9808803, 113285786.00360973, 0.0, 0.0, 0.0, -235382612.4995677, 3985354344.8681536, 0.0, 0.0, 0.0, 87781196.91790846, 27339201435.297394, 8519455804.023233, -518317006.6590065, 0.0, 72781368868.39719, -6133557676.831683, 0.0, 52263394041.374664, 0.0, 25428346793.25849] + - [936314786.8968203, 80833117.672499, 0.0, 0.0, 0.0, 110222775.82612513, 2314391966.661147, 0.0, 0.0, 0.0, 102518319.262035, 22665764106.85165, 10699908369.669474, -252339646.012082, 0.0, 54125167812.039314, -4839685559.488184, 0.0, 27988353518.859665, 0.0, 8076640558.8585005] + - [459476847.22473943, 50723215.96362021, 0.0, 0.0, 0.0, 44624062.11459313, 963021463.3416004, 0.0, 0.0, 0.0, 63418511.854790874, 20450235425.96102, 9176487472.148022, -318201927.73381317, 0.0, 39196915729.85904, -3395447917.8743534, 0.0, 21820483410.15772, 0.0, 2768066330.973254] + - [281350049.44872, 19062499.890864983, 0.0, 0.0, 0.0, 39788481.558390185, 480065126.665447, 0.0, 0.0, 0.0, 35649958.00142443, 20473859852.028965, 9004633626.168808, -370375609.629183, 0.0, 35299428705.26732, -1524671060.6524186, 0.0, 15615256841.106361, 0.0, 1026128471.8607168] + - [224644322.01692382, 4177613.4992410876, 0.0, 0.0, 0.0, 22822651.106314287, 346901262.38535905, 0.0, 0.0, 0.0, 26944490.484182574, 21366371296.473003, 8306288511.852894, -349173302.5918751, 0.0, 31051165577.557346, -615674444.313989, 0.0, 13362814423.387623, 0.0, 627053086.269001] + - [187672692.57290956, -2993741.656823819, 0.0, 0.0, 0.0, 14817252.655003047, 324078740.9094225, 0.0, 0.0, 0.0, 22977520.67687867, 21785402237.03918, 7885934214.420893, -281941707.05108696, 0.0, 26088284004.54947, -91553134.31292474, 0.0, 10663481378.13921, 0.0, 461211585.49078345] + - [161609316.90177184, -3309906.622644328, 0.0, 0.0, 0.0, 14196051.945945216, 317531903.30316025, 0.0, 0.0, 0.0, 19104038.48691781, 21621041012.04207, 6912268845.2773905, -151464382.0873222, 0.0, 22217425410.95908, -10375272.853503438, 0.0, 8537806429.681531, 0.0, 364794590.1572093] + - [137969183.99018735, -2612569.6184869376, 0.0, 0.0, 0.0, 10110737.414443506, 309152872.5553294, 0.0, 0.0, 0.0, 15276680.601082614, 20779461548.755814, 6380607368.417731, -81958836.22604564, 0.0, 18717308525.793583, 2259343.50512368, 0.0, 6549534664.533833, 0.0, 285660364.09887934] + - [116600478.4523859, -1443459.826543158, 0.0, 0.0, 0.0, 9756447.07571729, 303218881.82122993, 0.0, 0.0, 0.0, 12426129.212282114, 19923519424.805744, 5510503208.482732, -145792800.15431416, 0.0, 15586807919.093891, -28845801.840308778, 0.0, 4893346064.323091, 0.0, 220544333.37495336] + - [97422515.98334335, -997091.0381108759, 0.0, 0.0, 0.0, 7650615.789120105, 292909738.469172, 0.0, 0.0, 0.0, 11590547.025402421, 18925122694.713356, 4939813431.154279, -215770838.70957416, 0.0, 12739863625.745161, -43922352.51904449, 0.0, 3604017503.6991744, 0.0, 168037150.44173867] + - [81358328.95851956, 122590.70890719072, 0.0, 0.0, 0.0, 7709138.634627286, 300285135.273037, 0.0, 0.0, 0.0, 12779793.365596209, 17539655765.235256, 3340368066.1970086, -299940988.574154, 0.0, 8379809772.736287, -29747619.287767652, 0.0, 2655217532.05773, 0.0, 128226839.00696014] + - [67080158.82424255, 1150059.0011940901, 0.0, 0.0, 0.0, 8354890.671745444, 334604810.69196564, 0.0, 0.0, 0.0, 15336313.590033066, 15853197990.946262, 1772039285.1553001, -358354291.37689996, 0.0, 4637021573.468788, -2424421.8976960694, 0.0, 1917970315.4393296, 0.0, 95377930.58201036] + - [55553240.58366735, 1941394.5823109567, 0.0, 0.0, 0.0, 8124277.187599225, 376257910.10373855, 0.0, 0.0, 0.0, 18041654.778164484, 14061229868.525568, 1013471013.85025, -411634704.48295814, 0.0, 2889083609.8505793, -12258851.347575188, 0.0, 1351951128.6929338, 0.0, 71456369.55600888] + - [44994384.56866734, 2180662.5761736603, 0.0, 0.0, 0.0, 7061108.353385276, 395913126.7681885, 0.0, 0.0, 0.0, 19527620.335504133, 11003024089.793188, 625226575.7818947, -386594144.7272241, 0.0, 1877272361.936434, -15695344.266583264, 0.0, 838106592.74152, 0.0, 52519301.176315226] + - [36509915.3832926, 2151842.3143516458, 0.0, 0.0, 0.0, 6124281.751202558, 375210610.3003366, 0.0, 0.0, 0.0, 17825049.8174219, 7310260724.863415, 354179115.2888132, -261309728.4735774, 0.0, 1099701983.6863494, -6469059.311161065, 0.0, 466233432.88131785, 0.0, 38106482.51374478] + - [27272722.33611301, 993432.1718194059, 0.0, 0.0, 0.0, 3331136.312449322, 239673891.33303756, 0.0, 0.0, 0.0, 10738401.632739767, 4521289678.947009, 266089109.4029744, -148760396.98544225, 0.0, 683571619.6771157, -4841801.236680448, 0.0, 243066553.44047254, 0.0, 23330158.861795776] + - [19745236.354008205, 510321.8004162957, 0.0, 0.0, 0.0, 1832045.8991628585, 144312493.8658793, 0.0, 0.0, 0.0, 6016948.89773326, 2675615584.13509, 184789087.68407992, -79832450.74825534, 0.0, 420297066.7672982, -4125365.2248271434, 0.0, 113253467.97005808, 0.0, 13417874.462175902] + - [9179700.675681142, 307950.61736175837, 0.0, 0.0, 0.0, 1267110.0781497026, 86939021.67477001, 0.0, 0.0, 0.0, 3396279.8195240535, 1203040036.154266, 137345812.75625196, -31896540.37930602, 0.0, 231512293.70712498, -3561131.725327512, 0.0, 36395660.02090348, 0.0, 6805118.090718728] + - [931474.1817045894, 232415.29456365184, 0.0, 0.0, 0.0, 106353.52899654783, 15879263.61054028, 0.0, 0.0, 0.0, 117375.6660814398, 118283403.93224278, 1168848.1431805997, -795943.4168930704, 0.0, 1384839.7699354952, -26483.691742438405, 0.0, 186239.91293931668, 0.0, 71452.33631373737] + inertia_matrix: + grid: [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.075, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0] + values: + - [3127.4021155424143, 0.0, 0.0, 0.0, 0.0, 73.93195471060494, 3127.4021155424143, 0.0, 0.0, 0.0, -0.23227931035313248, 3127.4021155424143, -73.93195471060494, 0.23227931035313248, 0.0, 10167.976322208995, 1.0683130734106165, 0.0, 10166.284427210068, 0.0, 20334.260749419092] + - [2964.7325318133635, 0.0, 0.0, 0.0, 0.0, -39.689341530367614, 2964.7325318133635, 0.0, 0.0, 0.0, -0.1696455253166024, 2964.7325318133635, 39.689341530367614, 0.1696455253166024, 0.0, 9670.817488009772, -0.9133955577605082, 0.0, 9677.506658278195, 0.0, 19348.32414628797] + - [2805.1273323852683, 0.0, 0.0, 0.0, 0.0, -140.75148902158406, 2805.1273323852683, 0.0, 0.0, 0.0, 2.405715769683996, 2805.1273323852683, 140.75148902158406, -2.405715769683996, 0.0, 9183.723741815673, -6.143364484361837, 0.0, 9189.979166446146, 0.0, 18373.702908261756] + - [2591.1367835087917, 0.0, 0.0, 0.0, 0.0, -186.50710374919134, 2591.1367835087917, 0.0, 0.0, 0.0, 8.850322233785226, 2591.1367835087917, 186.50710374919134, -8.850322233785226, 0.0, 8366.670547933158, -30.1760176639648, 0.0, 7913.55513775584, 0.0, 16280.22568568902] + - [2389.1154059162695, 0.0, 0.0, 0.0, 0.0, -225.67253185892582, 2389.1154059162695, 0.0, 0.0, 0.0, 12.729809187017585, 2389.1154059162695, 225.67253185892582, -12.729809187017585, 0.0, 7605.999205249705, -51.13814800535637, 0.0, 6778.707874270462, 0.0, 14384.707079520182] + - [2203.52246956623, 0.0, 0.0, 0.0, 0.0, -266.66982245842087, 2203.52246956623, 0.0, 0.0, 0.0, 15.77615497545956, 2203.52246956623, 266.66982245842087, -15.77615497545956, 0.0, 6947.021691181144, -69.34293642402783, 0.0, 5816.730513104689, 0.0, 12763.75220428584] + - [1793.5621800535478, 0.0, 0.0, 0.0, 0.0, -349.63893753405364, 1793.5621800535478, 0.0, 0.0, 0.0, 21.32062998431816, 1793.5621800535478, 349.63893753405364, -21.32062998431816, 0.0, 5542.22198919525, -103.28185672319495, 0.0, 3914.596828171232, 0.0, 9456.81881736644] + - [1694.5071226473444, 0.0, 0.0, 0.0, 0.0, -525.4310002430254, 1694.5071226473444, 0.0, 0.0, 0.0, 33.63149776511567, 1694.5071226473444, 525.4310002430254, -33.63149776511567, 0.0, 4883.611585776837, -159.42251092667695, 0.0, 2785.9557474336307, 0.0, 7669.567333210458] + - [1050.5041617289855, 0.0, 0.0, 0.0, 0.0, -610.1711896797851, 1050.5041617289855, 0.0, 0.0, 0.0, 24.488449094119666, 1050.5041617289855, 610.1711896797851, -24.488449094119666, 0.0, 3320.886520496825, -109.41235764515795, 0.0, 956.3088698304845, 0.0, 4277.195390327287] + - [668.8389205216013, 0.0, 0.0, 0.0, 0.0, -519.3241440864526, 668.8389205216013, 0.0, 0.0, 0.0, 20.275144559753706, 668.8389205216013, 519.3241440864526, -20.275144559753706, 0.0, 2253.558667409682, -74.25657502591736, 0.0, 476.36366817186706, 0.0, 2729.9223355815425] + - [531.0612749513001, 0.0, 0.0, 0.0, 0.0, -469.18731596545734, 531.0612749513001, 0.0, 0.0, 0.0, 18.40686653041935, 531.0612749513001, 469.18731596545734, -18.40686653041935, 0.0, 1848.5783850624332, -51.00047866730059, 0.0, 268.55950272107657, 0.0, 2117.1378877835145] + - [483.98515809475083, 0.0, 0.0, 0.0, 0.0, -429.5473703129163, 483.98515809475083, 0.0, 0.0, 0.0, 15.24938260415129, 483.98515809475083, 429.5473703129163, -15.24938260415129, 0.0, 1564.7359685439142, -34.07084223757462, 0.0, 204.06774305708595, 0.0, 1768.8037116010007] + - [458.0838867335805, 0.0, 0.0, 0.0, 0.0, -387.99790618434287, 458.0838867335805, 0.0, 0.0, 0.0, 12.541536147390817, 458.0838867335805, 387.99790618434287, -12.541536147390817, 0.0, 1286.7175819089484, -23.38641910057473, 0.0, 154.74717074687635, 0.0, 1441.4647526558301] + - [433.8716017058155, 0.0, 0.0, 0.0, 0.0, -345.8892017251126, 433.8716017058155, 0.0, 0.0, 0.0, 9.385100666405265, 433.8716017058155, 345.8892017251126, -9.385100666405265, 0.0, 1076.1432859614897, -18.75152324183863, 0.0, 120.1630106896849, 0.0, 1196.3062966511723] + - [404.9178066535816, 0.0, 0.0, 0.0, 0.0, -311.07188808957676, 404.9178066535816, 0.0, 0.0, 0.0, 7.475763615859694, 404.9178066535816, 311.07188808957676, -7.475763615859694, 0.0, 895.7513821150329, -15.603626309920882, 0.0, 90.50849177530833, 0.0, 986.2598738903342] + - [377.73123303078404, 0.0, 0.0, 0.0, 0.0, -272.8500883723055, 377.73123303078404, 0.0, 0.0, 0.0, 7.8155616062122695, 377.73123303078404, 272.8500883723055, -7.8155616062122695, 0.0, 735.407926823897, -13.644216263894043, 0.0, 66.51587194758397, 0.0, 801.9237987714802] + - [350.48434003585845, 0.0, 0.0, 0.0, 0.0, -237.97949220138435, 350.48434003585845, 0.0, 0.0, 0.0, 8.182976209383485, 350.48434003585845, 237.97949220138435, -8.182976209383485, 0.0, 593.1078000418055, -11.662250592755035, 0.0, 48.3879168461972, 0.0, 641.4957168880029] + - [307.3478250743852, 0.0, 0.0, 0.0, 0.0, -164.7291992520334, 307.3478250743852, 0.0, 0.0, 0.0, 7.95168602738849, 307.3478250743852, 164.7291992520334, -7.95168602738849, 0.0, 389.10967484563156, -7.836966520296293, 0.0, 35.22217015645534, 0.0, 424.3318450020865] + - [260.2653356372791, 0.0, 0.0, 0.0, 0.0, -93.43468152003294, 260.2653356372791, 0.0, 0.0, 0.0, 7.292661316519065, 260.2653356372791, 93.43468152003294, -7.292661316519065, 0.0, 215.46936888932268, -4.176133069084764, 0.0, 25.215546621059765, 0.0, 240.68491551038218] + - [223.94256194555769, 0.0, 0.0, 0.0, 0.0, -57.93504767403098, 223.94256194555769, 0.0, 0.0, 0.0, 7.223037382444947, 223.94256194555769, 57.93504767403098, -7.223037382444947, 0.0, 131.65454148509653, -2.6421037604616724, 0.0, 17.745330077956677, 0.0, 149.39987156305426] + - [179.58407067190126, 0.0, 0.0, 0.0, 0.0, -38.0523975504382, 179.58407067190126, 0.0, 0.0, 0.0, 6.572357722853001, 179.58407067190126, 38.0523975504382, -6.572357722853001, 0.0, 84.64962149907886, -1.7996118776795522, 0.0, 11.271194923324614, 0.0, 95.92081642240376] + - [129.3080054809469, 0.0, 0.0, 0.0, 0.0, -23.226025130813625, 129.3080054809469, 0.0, 0.0, 0.0, 4.71916228979406, 129.3080054809469, 23.226025130813625, -4.71916228979406, 0.0, 51.45480233093064, -1.0405277605856154, 0.0, 6.684580575763557, 0.0, 58.13938290669439] + - [84.45573745266202, 0.0, 0.0, 0.0, 0.0, -16.39546225863475, 84.45573745266202, 0.0, 0.0, 0.0, 2.8210572700220213, 84.45573745266202, 16.39546225863475, -2.8210572700220213, 0.0, 31.507539581364625, -0.6232077662449509, 0.0, 3.616337664050583, 0.0, 35.1238772454151] + - [54.70473032506861, 0.0, 0.0, 0.0, 0.0, -11.033185396820333, 54.70473032506861, 0.0, 0.0, 0.0, 1.6418254028409995, 54.70473032506861, 11.033185396820333, -1.6418254028409995, 0.0, 19.31985607950643, -0.36848755076490375, 0.0, 1.78333715736047, 0.0, 21.103193236866915] + - [34.44992885232661, 0.0, 0.0, 0.0, 0.0, -8.119492797706668, 34.44992885232661, 0.0, 0.0, 0.0, 0.916505016263078, 34.44992885232661, 8.119492797706668, -0.916505016263078, 0.0, 12.262821999907853, -0.24956166062622986, 0.0, 0.7573836161406937, 0.0, 13.020205616048557] + - [5.394970691335722, 0.0, 0.0, 0.0, 0.0, -0.1588859366089294, 5.394970691335722, 0.0, 0.0, 0.0, 0.036961089182658016, 5.394970691335722, 0.1588859366089294, -0.036961089182658016, 0.0, 0.09373427692288798, -0.0022768326051883147, 0.0, 0.007180810431802968, 0.0, 0.10091508735469075] + hub: + diameter: 7.94 + cone_angle: 0.06981317007977318 # 4 deg + drag_coefficient: 0.5 + flange_t2shell_t: 6.0 + flange_OD2hub_D: 0.6 + flange_ID2OD: 0.8 + hub_blade_spacing_margin: 1.2 + hub_stress_concentration: 3.0 + n_front_brackets: 5 + n_rear_brackets: 5 + clearance_hub_spinner: 0.5 + spin_hole_incr: 1.2 + pitch_system_scaling_factor: 0.75 + spinner_gust_ws: 70.0 + hub_material: cast_iron + spinner_material: glass_uni + nacelle: + drivetrain: + uptilt: 0.10471975511965977 # 6 deg + distance_tt_hub: 5.614 + overhang: 12.0313 + drag_coefficient: 0.5 + distance_hub_mb: 1.0 + distance_mb_mb: 1.2 + lss_diameter: [3.0, 3.0] + lss_wall_thickness: [0.1, 0.1] + nose_diameter: [2.2, 2.2] + nose_wall_thickness: [0.1, 0.1] + generator_length: 2.15 + bedplate_wall_thickness: + grid: [0.0, 1.0] + values: [0.05, 0.05] + gear_ratio: 1.0 + gearbox_efficiency: 1.0 + mb1Type: CARB + mb2Type: SRB + uptower: True + lss_material: steel_drive + bedplate_material: steel_drive + generator: + generator_type: PMSG_Outer + rho_Fe: 7700.0 + rho_Fes: 7850.0 + rho_Copper: 8900.0 + rho_PM: 7450.0 + B_r: 1.279 + P_Fe0e: 1.0 + P_Fe0h: 4.0 + S_N: -0.002 + alpha_p: 1.0995574287564276 #0.5*np.pi*0.7 + b_r_tau_r: 0.45 + b_ro: 0.004 + b_s_tau_s: 0.45 + b_so: 0.004 + cofi: 0.9 + freq: 60.0 + h_i: 0.004 + h_sy0: 0.0 + h_w: 0.005 + k_fes: 0.8 + k_fillr: 0.55 + k_fills: 0.65 + k_s: 0.2 + m: 3 + mu_0: 1.2566370614359173e-06 #np.pi*4e-7 + mu_r: 1.06 + phi: 1.5707963267948966 # 90 deg + q1: 5 + q2: 4 + ratio_mw2pp: 0.8 + resist_Cu: 2.52e-8 #1.8e-8*1.4 + y_tau_pr: 0.8333333 #10. / 12 + y_tau_p: 0.8 #12./15. + rad_ag: 5.12623359 + len_s: 2.23961662 + tau_p: 0.1610453779 + tau_s: 0.1339360726 + h_s: 0.3769449149 + b_s: 0.05121796888 + b_t: 0.08159225451 + h_t: 0.3859449149 + h_ys: 0.03618114528 + h_yr: 0.0361759511 + h_m: 0.0995385122 + b_m: 0.1288363023 + B_g: 1.38963289 + B_symax: 1.63455514 + B_rymax: 1.63478983 + p: 100 + R_s: 0.02457052 + L_s: 0.01138752 + S: 240 + t_r: 0.0607657125 + h_sr: 0.04677116325 + t_s: 0.06065213554 + h_ss: 0.04650825863 + E_p: 1905.2558883257652 + b: 2.0 + c: 5.0 + N_c: 2 + B_tmax: 1.9 + u_allow_pcent: 8.5 + y_allow_pcent: 1.0 + z_allow_deg: 0.05 + sigma: 60.e+3 + + h_0: 0.05 + C_Cu: 4.786 + C_Fe: 0.556 + C_Fes: 0.50139 + C_PM: 50.0 + tower: + outer_shape_bem: + reference_axis: &id003 + x: + grid: [0.0, 0.10047454902385111, 0.10048227783531449, 0.20094909804770222, 0.20095682685916558, 0.30142364707155334, 0.30143137588301672, 0.40189819609540445, 0.40190592490686788, 0.50237274511925556, 0.50238047393071894, 0.60284729414310667, 0.60285502295457005, 0.70332184316695778, 0.70332957197842116, 0.80379639219080889, 0.80380412100227239, 0.90427094121466001, 0.90427867002612350, 1.00000000000000000] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + y: + grid: [0.0, 0.10047454902385111, 0.10048227783531449, 0.20094909804770222, 0.20095682685916558, 0.30142364707155334, 0.30143137588301672, 0.40189819609540445, 0.40190592490686788, 0.50237274511925556, 0.50238047393071894, 0.60284729414310667, 0.60285502295457005, 0.70332184316695778, 0.70332957197842116, 0.80379639219080889, 0.80380412100227239, 0.90427094121466001, 0.90427867002612350, 1.00000000000000000] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + z: + grid: [0.0, 0.10047454902385111, 0.10048227783531449, 0.20094909804770222, 0.20095682685916558, 0.30142364707155334, 0.30143137588301672, 0.40189819609540445, 0.40190592490686788, 0.50237274511925556, 0.50238047393071894, 0.60284729414310667, 0.60285502295457005, 0.70332184316695778, 0.70332957197842116, 0.80379639219080889, 0.80380412100227239, 0.90427094121466001, 0.90427867002612350, 1.00000000000000000] + values: [15.000, 28.000, 28.001, 41.000, 41.001, 54.000, 54.001, 67.000, 67.001, 80.000, 80.001, 93.000, 93.001, 106.000, 106.001, 119.000, 119.001, 132.000, 132.001, 144.386] + outer_diameter: + grid: [0.0, 0.10047454902385111, 0.10048227783531449, 0.20094909804770222, 0.20095682685916558, 0.30142364707155334, 0.30143137588301672, 0.40189819609540445, 0.40190592490686788, 0.50237274511925556, 0.50238047393071894, 0.60284729414310667, 0.60285502295457005, 0.70332184316695778, 0.70332957197842116, 0.80379639219080889, 0.80380412100227239, 0.90427094121466001, 0.90427867002612350, 1.00000000000000000] + values: [10.000, 10.000, 10.000, 9.926, 9.926, 9.443, 9.443, 8.833, 8.833, 8.151, 8.151, 7.390, 7.390, 6.909, 6.909, 6.748, 6.748, 6.572, 6.572, 6.500] + drag_coefficient: + grid: [0.0, 1.0] + values: [0.5, 0.5] + internal_structure_2d_fem: + outfitting_factor: 1.07 + reference_axis: *id003 + layers: + - name: tower_wall + material: steel + thickness: + grid: [0.0, 0.10047454902385111, 0.10048227783531449, 0.20094909804770222, 0.20095682685916558, 0.30142364707155334, 0.30143137588301672, 0.40189819609540445, 0.40190592490686788, 0.50237274511925556, 0.50238047393071894, 0.60284729414310667, 0.60285502295457005, 0.70332184316695778, 0.70332957197842116, 0.80379639219080889, 0.80380412100227239, 0.90427094121466001, 0.90427867002612350, 1.00000000000000000] + values: [0.039496, 0.039496, 0.036456, 0.036456, 0.033779, 0.033779, 0.032192, 0.032192, 0.030708, 0.030708, 0.029101, 0.029101, 0.027213, 0.027213, 0.024009, 0.024009, 0.020826, 0.020826, 0.023998, 0.023998] + monopile: + transition_piece_mass: 100000.0 + outer_shape_bem: + reference_axis: &id004 + x: + grid: [0.0, 0.50000000000000000, 0.50001111111111118, 0.55555555555555558, 0.55556666666666676, 0.61111111111111116, 0.61112222222222223, 0.66666666666666663, 0.66667777777777770, 0.72222222222222221, 0.72223333333333339, 0.77777777777777779, 0.77778888888888897, 0.83333333333333337, 0.83334444444444444, 0.88888888888888884, 0.88890000000000002, 0.94444444444444442, 0.94445555555555560, 1.00000000000000000] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + y: + grid: [0.0, 0.50000000000000000, 0.50001111111111118, 0.55555555555555558, 0.55556666666666676, 0.61111111111111116, 0.61112222222222223, 0.66666666666666663, 0.66667777777777770, 0.72222222222222221, 0.72223333333333339, 0.77777777777777779, 0.77778888888888897, 0.83333333333333337, 0.83334444444444444, 0.88888888888888884, 0.88890000000000002, 0.94444444444444442, 0.94445555555555560, 1.00000000000000000] + values: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + z: + grid: [0.0, 0.50000000000000000, 0.50001111111111118, 0.55555555555555558, 0.55556666666666676, 0.61111111111111116, 0.61112222222222223, 0.66666666666666663, 0.66667777777777770, 0.72222222222222221, 0.72223333333333339, 0.77777777777777779, 0.77778888888888897, 0.83333333333333337, 0.83334444444444444, 0.88888888888888884, 0.88890000000000002, 0.94444444444444442, 0.94445555555555560, 1.00000000000000000] + values: [-75.000, -30.000, -29.999, -25.000, -24.999, -20.000, -19.999, -15.000, -14.999, -10.000, -9.999, -5.000, -4.999, 0.000, 0.001, 5.000, 5.001, 10.000, 10.001, 15.000] + outer_diameter: + grid: [0.0, 0.50000000000000000, 0.50001111111111118, 0.55555555555555558, 0.55556666666666676, 0.61111111111111116, 0.61112222222222223, 0.66666666666666663, 0.66667777777777770, 0.72222222222222221, 0.72223333333333339, 0.77777777777777779, 0.77778888888888897, 0.83333333333333337, 0.83334444444444444, 0.88888888888888884, 0.88890000000000002, 0.94444444444444442, 0.94445555555555560, 1.00000000000000000] + values: [10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000, 10.000] + drag_coefficient: + grid: [0.0, 1.0] + values: [0.5, 0.5] + internal_structure_2d_fem: + outfitting_factor: 1.07 + reference_axis: *id004 + layers: + - name: monopile_wall + material: steel + thickness: + grid: [0.0, 0.50000000000000000, 0.50001111111111118, 0.55555555555555558, 0.55556666666666676, 0.61111111111111116, 0.61112222222222223, 0.66666666666666663, 0.66667777777777770, 0.72222222222222221, 0.72223333333333339, 0.77777777777777779, 0.77778888888888897, 0.83333333333333337, 0.83334444444444444, 0.88888888888888884, 0.88890000000000002, 0.94444444444444442, 0.94445555555555560, 1.00000000000000000] + values: [0.055341, 0.055341, 0.055341, 0.055341, 0.053449, 0.053449, 0.051509, 0.051509, 0.049527, 0.049527, 0.047517, 0.047517, 0.045517, 0.045517, 0.043527, 0.043527, 0.042242, 0.042242, 0.041058, 0.041058] + transition_piece_cost: 0.0 + gravity_foundation_mass: 0.0 +airfoils: + - name: circular + coordinates: + x: [1.0, 0.99901, 0.99606, 0.99114, 0.98429, 0.97553, 0.96489, 0.95241, 0.93815, 0.92216, 0.90451, 0.88526, 0.86448, 0.84227, 0.81871, 0.79389, 0.76791, 0.74088, 0.71289, 0.68406, 0.65451, 0.62434, 0.59369, 0.56267, 0.5314, 0.5, 0.4686, 0.43733, 0.40631, 0.37566, 0.34549, 0.31594, 0.28711, 0.25912, 0.23209, 0.20611, 0.18129, 0.15773, 0.13552, 0.11474, 0.09549, 0.07784, 0.06185, 0.04759, 0.03511, 0.02447, 0.01571, 0.00886, 0.00394, 0.00099, 0.0, 0.00099, 0.00394, 0.00886, 0.01571, 0.02447, 0.03511, 0.04759, 0.06185, 0.07784, 0.09549, 0.11474, 0.13552, 0.15773, 0.18129, 0.20611, 0.23209, 0.25912, 0.28711, 0.31594, 0.34549, 0.37566, 0.40631, 0.43733, 0.4686, 0.5, 0.5314, 0.56267, 0.59369, 0.62434, 0.65451, 0.68406, 0.71289, 0.74088, 0.76791, 0.79389, 0.81871, 0.84227, 0.86448, 0.88526, 0.90451, 0.92216, 0.93815, 0.95241, 0.96489, 0.97553, 0.98429, 0.99114, 0.99606, 0.99901, 1.0] + y: [0.0, 0.0314, 0.06267, 0.09369, 0.12434, 0.15451, 0.18406, 0.21289, 0.24088, 0.26791, 0.29389, 0.31871, 0.34227, 0.36448, 0.38526, 0.40451, 0.42216, 0.43815, 0.45241, 0.46489, 0.47553, 0.48429, 0.49114, 0.49606, 0.49901, 0.5, 0.49901, 0.49606, 0.49114, 0.48429, 0.47553, 0.46489, 0.45241, 0.43815, 0.42216, 0.40451, 0.38526, 0.36448, 0.34227, 0.31871, 0.29389, 0.26791, 0.24088, 0.21289, 0.18406, 0.15451, 0.12434, 0.09369, 0.06267, 0.0314, 0.0, -0.0314, -0.06267, -0.09369, -0.12434, -0.15451, -0.18406, -0.21289, -0.24088, -0.26791, -0.29389, -0.31871, -0.34227, -0.36448, -0.38526, -0.40451, -0.42216, -0.43815, -0.45241, -0.46489, -0.47553, -0.48429, -0.49114, -0.49606, -0.49901, -0.5, -0.49901, -0.49606, -0.49114, -0.48429, -0.47553, -0.46489, -0.45241, -0.43815, -0.42216, -0.40451, -0.38526, -0.36448, -0.34227, -0.31871, -0.29389, -0.26791, -0.24088, -0.21289, -0.18406, -0.15451, -0.12434, -0.09369, -0.06267, -0.0314, 0.0] + relative_thickness: 1.0 + aerodynamic_center: 0.5 + polars: + - configuration: Default + re: 3000000.0 + c_l: + grid: &id005 [-3.14, 3.14] + values: [0.0001, 0.0001] + c_d: + grid: *id005 + values: [0.35, 0.35] + c_m: + grid: *id005 + values: [-0.0001, -0.0001] + - name: SNL-FFA-W3-500 + coordinates: + x: [1.0, 0.99944304, 0.99812049, 0.99569352, 0.99230484, 0.98802844, 0.98281508, 0.97666422, 0.96964069, 0.96174313, 0.95297315, 0.94338928, 0.93301284, 0.92185147, 0.90995468, 0.89736121, 0.88408503, 0.8701629, 0.85565276, 0.84057695, 0.82497463, 0.80889455, 0.79236237, 0.77542101, 0.75812546, 0.7405018, 0.72259209, 0.70444539, 0.68608843, 0.66757021, 0.64892678, 0.63018643, 0.61140138, 0.59259673, 0.57380843, 0.5550757, 0.53641763, 0.51787958, 0.49948103, 0.48125155, 0.46322225, 0.44540666, 0.42784323, 0.41053864, 0.39352525, 0.37681123, 0.36041977, 0.34436494, 0.32865846, 0.31331898, 0.29834798, 0.2837658, 0.26956679, 0.25577362, 0.2423778, 0.22939648, 0.21681735, 0.20465763, 0.19290757, 0.18157496, 0.17065819, 0.16014896, 0.15005511, 0.14035465, 0.1310675, 0.12216148, 0.11365876, 0.10553619, 0.09779065, 0.09042902, 0.08341621, 0.07677403, 0.0704692, 0.06450016, 0.05888182, 0.05356799, 0.04857581, 0.04389793, 0.03949498, 0.03539484, 0.03157626, 0.02800644, 0.02471592, 0.02168071, 0.01886319, 0.01629514, 0.0139662, 0.01181764, 0.00988361, 0.00818368, 0.00663128, 0.00524853, 0.00408271, 0.00308998, 0.00219098, 0.00145967, 0.00096333, 0.00059878, 0.00028988, 7.804e-05, 0.0, 7.807e-05, 0.00029009, 0.00059937, 0.00096448, 0.00146264, 0.00219661, 0.00309879, 0.00409516, 0.00526774, 0.00665839, 0.00821941, 0.00993095, 0.01187982, 0.01404463, 0.01639219, 0.01898469, 0.02182867, 0.02489252, 0.02822001, 0.03182924, 0.03568998, 0.03984236, 0.04430035, 0.04903788, 0.05410025, 0.05948747, 0.06518787, 0.07124791, 0.07764648, 0.08439704, 0.0915234, 0.09900711, 0.10688721, 0.11514762, 0.12380644, 0.13287211, 0.14233176, 0.1522146, 0.16249918, 0.17321393, 0.18434125, 0.19590296, 0.20788328, 0.22029378, 0.23312344, 0.24637487, 0.26004146, 0.27412439, 0.28861129, 0.30349962, 0.3187741, 0.33443448, 0.35045732, 0.36684322, 0.38356093, 0.40060975, 0.41795607, 0.4355933, 0.4534925, 0.47163211, 0.48999236, 0.50853595, 0.52724867, 0.5460886, 0.5650309, 0.58404504, 0.603088, 0.62213765, 0.64114752, 0.66008031, 0.67890619, 0.69757164, 0.71604492, 0.73429135, 0.75225234, 0.76989792, 0.78719153, 0.80407383, 0.82051349, 0.83646946, 0.85189026, 0.86674791, 0.8810097, 0.89461041, 0.90752456, 0.9197304, 0.9311753, 0.94182765, 0.95167536, 0.96067486, 0.96878747, 0.97601191, 0.98233053, 0.98768615, 0.99208631, 0.99557391, 0.99806302, 0.99942968, 1.0] + y: [0.0, 0.01086983, 0.0117452, 0.01334146, 0.01554892, 0.01830045, 0.02160574, 0.02544031, 0.02973944, 0.03448209, 0.03964881, 0.045193, 0.05091599, 0.05708281, 0.06358138, 0.07042743, 0.07734661, 0.08467081, 0.0921802, 0.09990118, 0.10756554, 0.11533963, 0.12314445, 0.13105863, 0.13880784, 0.14656091, 0.15414446, 0.16162243, 0.1690763, 0.17621938, 0.18309227, 0.18987002, 0.19625049, 0.20235037, 0.20831587, 0.21376127, 0.21902667, 0.22392548, 0.22835814, 0.23243074, 0.23602942, 0.23922962, 0.24206676, 0.24439517, 0.24632908, 0.24781218, 0.24907553, 0.24961759, 0.25, 0.2499146, 0.24940354, 0.2484402, 0.24723387, 0.2455593, 0.24358422, 0.24124765, 0.2386039, 0.23566026, 0.2324321, 0.22883962, 0.22496679, 0.22083239, 0.21649585, 0.21197874, 0.20722821, 0.20232328, 0.197174, 0.19203678, 0.18655863, 0.18109338, 0.17545947, 0.16968205, 0.16378555, 0.1577649, 0.15169879, 0.14556478, 0.13948626, 0.1333378, 0.1270497, 0.12086576, 0.11468985, 0.10849184, 0.1022246, 0.09589286, 0.08980724, 0.08374779, 0.07773838, 0.07187918, 0.0660103, 0.06018911, 0.0539095, 0.04732699, 0.04014879, 0.03372622, 0.02591034, 0.0200319, 0.01481159, 0.01096429, 0.00515421, 0.00237777, 0.0, -0.00676349, -0.0092701, -0.01485268, -0.01909805, -0.02425157, -0.03028001, -0.03749177, -0.04339708, -0.049743, -0.05593635, -0.06191302, -0.06758273, -0.07340171, -0.07913246, -0.08498169, -0.09099183, -0.09692059, -0.10302984, -0.10915375, -0.11531066, -0.12113778, -0.12714727, -0.13319857, -0.13898026, -0.1448503, -0.15067474, -0.15648787, -0.16231789, -0.16795081, -0.17355519, -0.17904803, -0.18436086, -0.18964752, -0.19466991, -0.19967718, -0.20448577, -0.20911273, -0.21356541, -0.21790461, -0.22189862, -0.22585022, -0.22942761, -0.23282521, -0.23594152, -0.23867787, -0.24127615, -0.24342871, -0.24536479, -0.24668824, -0.24775175, -0.2484068, -0.2487, -0.24831476, -0.2476416, -0.24639477, -0.24454631, -0.24221768, -0.23936461, -0.23593587, -0.23173768, -0.22714767, -0.22177388, -0.21593576, -0.20951266, -0.20242622, -0.19484392, -0.18680862, -0.1783067, -0.16936964, -0.16006127, -0.15031319, -0.14049402, -0.13044955, -0.12028637, -0.11020462, -0.10038818, -0.0907307, -0.08140578, -0.07271636, -0.06444497, -0.05666457, -0.04953952, -0.04299056, -0.03713052, -0.0319789, -0.02747518, -0.02370172, -0.02037524, -0.01799359, -0.01593023, -0.01421422, -0.01283805, -0.01177726, -0.01099873, -0.01045135, -0.01008163, -0.00985456, -0.00974345, -0.0] + relative_thickness: 0.5 + aerodynamic_center: 0.316 + polars: + - configuration: Default + re: 8100000.0 + c_l: + grid: &id006 [-3.141, -2.96706, -2.79253, -2.61799, -2.44346, -2.26893, -2.0944, -1.91986, -1.74533, -1.5708, -1.39626, -1.22173, -1.0472, -0.87266, -0.69813, -0.5236, -0.34907, -0.3447, -0.33598, -0.33161, -0.32725, -0.32289, -0.31852, -0.31416, -0.30543, -0.30107, -0.29671, -0.29234, -0.28798, -0.28362, -0.27925, -0.27489, -0.27053, -0.26616, -0.25744, -0.25307, -0.24871, -0.24435, -0.23998, -0.23562, -0.23126, -0.22689, -0.22253, -0.21817, -0.2138, -0.20944, -0.20508, -0.20071, -0.19199, -0.18762, -0.18326, -0.1789, -0.17453, -0.17017, -0.16581, -0.16144, -0.15708, -0.15272, -0.14835, -0.14399, -0.13963, -0.13526, -0.1309, -0.12654, -0.12217, -0.11781, -0.11345, -0.10908, -0.10472, -0.10036, -0.09599, -0.09163, -0.08727, -0.0829, -0.07854, -0.07418, -0.06981, -0.06545, -0.06109, -0.05672, -0.05236, -0.048, -0.04363, -0.03927, -0.03491, -0.03054, -0.02618, -0.02182, -0.01745, -0.01309, -0.00873, -0.00436, 0.0, 0.00401, 0.0082, 0.01222, 0.01641, 0.02042, 0.02443, 0.02862, 0.03264, 0.03683, 0.04084, 0.04485, 0.04904, 0.05306, 0.05725, 0.06126, 0.06528, 0.06946, 0.07348, 0.07767, 0.08168, 0.0857, 0.08988, 0.0939, 0.09809, 0.1021, 0.10612, 0.1103, 0.11432, 0.11851, 0.12252, 0.12654, 0.13073, 0.13474, 0.13893, 0.14294, 0.14696, 0.15115, 0.15516, 0.15917, 0.17244, 0.1857, 0.19897, 0.21206, 0.22532, 0.23859, 0.25168, 0.26494, 0.27821, 0.2913, 0.30456, 0.31782, 0.33109, 0.34418, 0.35744, 0.37071, 0.3838, 0.39706, 0.41033, 0.42342, 0.43668, 0.44995, 0.46304, 0.4763, 0.48956, 0.50283, 0.51592, 0.52918, 0.54245, 0.55554, 0.5688, 0.58207, 0.59516, 0.60842, 0.62169, 0.63495, 0.64804, 0.66131, 0.67457, 0.68766, 0.70092, 0.71419, 0.72728, 0.74054, 0.75381, 0.7669, 0.78016, 0.79343, 0.80669, 0.81978, 0.83305, 0.84631, 0.8594, 0.87266, 1.0472, 1.22173, 1.39626, 1.5708, 1.74533, 1.91986, 2.0944, 2.26893, 2.44346, 2.61799, 2.79253, 2.96706, 3.141] + values: [0.0, 0.4419, 0.8837, 0.9674, 0.7801, 0.6293, 0.4785, 0.3189, 0.1553, 0.0, -0.1553, -0.3189, -0.4784, -0.6293, -0.7801, -0.9674, -1.0281, -1.0243, -1.0052, -0.9971, -1.0052, -0.9995, -0.9908, -0.9815, -0.9764, -0.9705, -0.9655, -0.9662, -0.9544, -0.9444, -0.9405, -0.9433, -0.933, -0.9211, -0.9158, -0.907, -0.8959, -0.8926, -0.8808, -0.8722, -0.866, -0.8626, -0.8489, -0.8363, -0.8363, -0.8271, -0.8141, -0.8004, -0.789, -0.7862, -0.7747, -0.7701, -0.7674, -0.7506, -0.729, -0.7095, -0.6855, -0.659, -0.6319, -0.6019, -0.5718, -0.5424, -0.5098, -0.4767, -0.4454, -0.4142, -0.3791, -0.346, -0.3144, -0.2817, -0.2461, -0.2133, -0.1827, -0.1494, -0.1158, -0.0837, -0.0529, -0.0225, 0.0089, 0.0392, 0.0686, 0.0974, 0.126, 0.1555, 0.1853, 0.2146, 0.243, 0.2713, 0.3006, 0.3295, 0.3578, 0.3857, 0.4135, 0.4425, 0.4715, 0.5003, 0.5286, 0.5567, 0.585, 0.6135, 0.6417, 0.6697, 0.6975, 0.7251, 0.7528, 0.7807, 0.8083, 0.8358, 0.8631, 0.8902, 0.9173, 0.9444, 0.9713, 0.9981, 1.0249, 1.0515, 1.0779, 1.1041, 1.1302, 1.156, 1.1818, 1.2076, 1.2334, 1.2589, 1.2841, 1.3088, 1.3331, 1.357, 1.381, 1.4054, 1.4295, 1.4531, 1.5154, 1.5749, 1.6151, 1.6443, 1.6824, 1.7146, 1.7362, 1.7627, 1.7706, 1.7639, 1.7604, 1.7251, 1.7035, 1.6784, 1.6505, 1.6227, 1.6067, 1.5972, 1.5892, 1.5815, 1.5563, 1.5272, 1.4982, 1.4691, 1.4401, 1.411, 1.382, 1.3622, 1.3424, 1.3225, 1.3027, 1.2829, 1.2631, 1.2433, 1.2234, 1.2036, 1.1838, 1.164, 1.1442, 1.1243, 1.1064, 1.0905, 1.0745, 1.0586, 1.0426, 1.0267, 1.0107, 0.9948, 0.9788, 0.9628, 0.9469, 0.9309, 0.915, 0.899, 0.6836, 0.4556, 0.2219, 0.0, -0.1553, -0.3189, -0.4784, -0.6293, -0.7801, -0.9674, -0.8837, -0.4418, 0.0] + c_d: + grid: *id006 + values: [0.0844, 0.0844, 0.1268, 0.2927, 0.497, 0.7161, 0.9246, 1.0985, 1.2182, 1.2707, 1.2182, 1.0985, 0.9246, 0.7161, 0.497, 0.2927, 0.1499, 0.1472, 0.1447, 0.1433, 0.1403, 0.1386, 0.1373, 0.136, 0.1322, 0.1306, 0.129, 0.1268, 0.1258, 0.1246, 0.1229, 0.1206, 0.1195, 0.1185, 0.115, 0.1138, 0.1127, 0.111, 0.11, 0.1089, 0.1075, 0.1059, 0.1051, 0.1042, 0.1023, 0.1013, 0.1004, 0.0997, 0.0971, 0.0956, 0.0948, 0.094, 0.0925, 0.0917, 0.0912, 0.0902, 0.0895, 0.0891, 0.0887, 0.0879, 0.0875, 0.0873, 0.0868, 0.0864, 0.0862, 0.086, 0.0856, 0.0853, 0.0852, 0.085, 0.0847, 0.0846, 0.0845, 0.0843, 0.0842, 0.084, 0.084, 0.0839, 0.0838, 0.0838, 0.0838, 0.0838, 0.0838, 0.0838, 0.0838, 0.0837, 0.0837, 0.0838, 0.0838, 0.0838, 0.0838, 0.0838, 0.0838, 0.0839, 0.0839, 0.0839, 0.084, 0.084, 0.0841, 0.0841, 0.0842, 0.0842, 0.0843, 0.0843, 0.0844, 0.0845, 0.0846, 0.0846, 0.0847, 0.0847, 0.0848, 0.0849, 0.085, 0.0851, 0.0852, 0.0853, 0.0853, 0.0854, 0.0856, 0.0857, 0.0858, 0.0859, 0.086, 0.0861, 0.0862, 0.0864, 0.0865, 0.0867, 0.0869, 0.087, 0.0871, 0.0873, 0.0879, 0.0886, 0.0895, 0.0912, 0.093, 0.0954, 0.0989, 0.1024, 0.1076, 0.1144, 0.1211, 0.131, 0.1399, 0.1492, 0.1591, 0.1691, 0.1778, 0.1858, 0.1937, 0.2014, 0.2135, 0.2267, 0.2399, 0.2531, 0.2663, 0.2795, 0.2927, 0.3078, 0.323, 0.3381, 0.3532, 0.3684, 0.3835, 0.3987, 0.4138, 0.4289, 0.4441, 0.4592, 0.4743, 0.4895, 0.5052, 0.5214, 0.5376, 0.5538, 0.5701, 0.5863, 0.6025, 0.6188, 0.635, 0.6512, 0.6675, 0.6837, 0.6999, 0.7161, 0.9246, 1.0985, 1.2182, 1.2707, 1.2182, 1.0985, 0.9246, 0.7161, 0.497, 0.2927, 0.1268, 0.0844, 0.0844] + c_m: + grid: *id006 + values: [0.0, 0.3125, 0.2831, 0.2632, 0.2048, 0.1932, 0.2008, 0.2136, 0.2221, 0.2198, 0.196, 0.1635, 0.1285, 0.0965, 0.0716, 0.0522, -0.0063, -0.0089, -0.0099, -0.0105, -0.011, -0.0116, -0.012, -0.0126, -0.0135, -0.0139, -0.0143, -0.0147, -0.0151, -0.0155, -0.0158, -0.0161, -0.0164, -0.0168, -0.0173, -0.0175, -0.0178, -0.0181, -0.0184, -0.0186, -0.0188, -0.0188, -0.0192, -0.0194, -0.0194, -0.0196, -0.0198, -0.02, -0.0199, -0.0196, -0.0194, -0.0184, -0.0183, -0.0192, -0.0205, -0.0224, -0.0247, -0.0267, -0.0287, -0.032, -0.0345, -0.0367, -0.0399, -0.043, -0.0453, -0.0476, -0.051, -0.0538, -0.056, -0.0586, -0.0619, -0.0644, -0.0663, -0.0688, -0.0715, -0.0737, -0.0756, -0.0774, -0.0793, -0.0811, -0.0826, -0.0838, -0.0852, -0.0867, -0.0883, -0.0897, -0.091, -0.0921, -0.0936, -0.0949, -0.0961, -0.0972, -0.0983, -0.0995, -0.1008, -0.1019, -0.1029, -0.104, -0.105, -0.1061, -0.1072, -0.1082, -0.1091, -0.11, -0.1109, -0.1119, -0.1128, -0.1137, -0.1146, -0.1153, -0.1161, -0.117, -0.1178, -0.1185, -0.1192, -0.1199, -0.1206, -0.1212, -0.1218, -0.1224, -0.123, -0.1235, -0.124, -0.1245, -0.125, -0.1254, -0.1257, -0.1259, -0.1262, -0.1265, -0.1267, -0.127, -0.1265, -0.1256, -0.1214, -0.1163, -0.1133, -0.1107, -0.108, -0.1063, -0.1042, -0.1025, -0.1013, -0.1001, -0.0998, -0.1001, -0.1016, -0.1036, -0.1064, -0.1099, -0.1136, -0.118, -0.1249, -0.1325, -0.14, -0.1476, -0.1551, -0.1627, -0.1703, -0.174, -0.1777, -0.1815, -0.1852, -0.1889, -0.1926, -0.1964, -0.2001, -0.2039, -0.2076, -0.2113, -0.215, -0.2188, -0.2218, -0.2242, -0.2266, -0.2289, -0.2313, -0.2337, -0.2361, -0.2384, -0.2408, -0.2432, -0.2455, -0.2479, -0.2503, -0.2527, -0.2833, -0.3156, -0.3482, -0.3773, -0.3877, -0.3865, -0.3806, -0.3803, -0.4032, -0.4854, -0.5325, -0.3906, 0.0] + - name: FFA-W3-211 + coordinates: + x: [1.0, 0.99944304, 0.99812049, 0.99569352, 0.99230484, 0.98802844, 0.98281508, 0.97666422, 0.96964069, 0.96174313, 0.95297315, 0.94338928, 0.93301284, 0.92185147, 0.90995468, 0.89736121, 0.88408503, 0.8701629, 0.85565276, 0.84057695, 0.82497463, 0.80889455, 0.79236237, 0.77542101, 0.75812546, 0.7405018, 0.72259209, 0.70444539, 0.68608843, 0.66757021, 0.64892678, 0.63018643, 0.61140138, 0.59259673, 0.57380843, 0.5550757, 0.53641763, 0.51787958, 0.49948103, 0.48125155, 0.46322225, 0.44540666, 0.42784323, 0.41053864, 0.39352525, 0.37681123, 0.36041977, 0.34436494, 0.32865846, 0.31331898, 0.29834798, 0.2837658, 0.26956679, 0.25577362, 0.2423778, 0.22939648, 0.21681735, 0.20465763, 0.19290757, 0.18157496, 0.17065819, 0.16014896, 0.15005511, 0.14035465, 0.1310675, 0.12216148, 0.11365876, 0.10553619, 0.09779065, 0.09042902, 0.08341621, 0.07677403, 0.0704692, 0.06450016, 0.05888182, 0.05356799, 0.04857581, 0.04389793, 0.03949498, 0.03539484, 0.03157626, 0.02800644, 0.02471592, 0.02168071, 0.01886319, 0.01629514, 0.0139662, 0.01181764, 0.00988361, 0.00818368, 0.00663128, 0.00524853, 0.00408271, 0.00308998, 0.00219098, 0.00145967, 0.00096333, 0.00059878, 0.00028988, 7.804e-05, 0.0, 7.807e-05, 0.00029009, 0.00059937, 0.00096448, 0.00146264, 0.00219661, 0.00309879, 0.00409516, 0.00526774, 0.00665839, 0.00821941, 0.00993095, 0.01187982, 0.01404463, 0.01639219, 0.01898469, 0.02182867, 0.02489252, 0.02822001, 0.03182924, 0.03568998, 0.03984236, 0.04430035, 0.04903788, 0.05410025, 0.05948747, 0.06518787, 0.07124791, 0.07764648, 0.08439704, 0.0915234, 0.09900711, 0.10688721, 0.11514762, 0.12380644, 0.13287211, 0.14233176, 0.1522146, 0.16249918, 0.17321393, 0.18434125, 0.19590296, 0.20788328, 0.22029378, 0.23312344, 0.24637487, 0.26004146, 0.27412439, 0.28861129, 0.30349962, 0.3187741, 0.33443448, 0.35045732, 0.36684322, 0.38356093, 0.40060975, 0.41795607, 0.4355933, 0.4534925, 0.47163211, 0.48999236, 0.50853595, 0.52724867, 0.5460886, 0.5650309, 0.58404504, 0.603088, 0.62213765, 0.64114752, 0.66008031, 0.67890619, 0.69757164, 0.71604492, 0.73429135, 0.75225234, 0.76989792, 0.78719153, 0.80407383, 0.82051349, 0.83646946, 0.85189026, 0.86674791, 0.8810097, 0.89461041, 0.90752456, 0.9197304, 0.9311753, 0.94182765, 0.95167536, 0.96067486, 0.96878747, 0.97601191, 0.98233053, 0.98768615, 0.99208631, 0.99557391, 0.99806302, 0.99942968, 1.0] + y: [0.00094, 0.00103065, 0.00124638, 0.00164402, 0.00220291, 0.00291409, 0.00378945, 0.00483319, 0.0060382, 0.00740799, 0.00894481, 0.01063951, 0.01252416, 0.014572, 0.01679743, 0.01918007, 0.02174274, 0.0244546, 0.02734973, 0.03038334, 0.0335578, 0.03687673, 0.04034551, 0.04394717, 0.04766271, 0.0514856, 0.05540822, 0.05935846, 0.06338795, 0.06740015, 0.07143043, 0.07541763, 0.07938054, 0.08322037, 0.08694859, 0.09053734, 0.0939943, 0.09729729, 0.10036579, 0.10331235, 0.10607106, 0.10853282, 0.11080624, 0.11273489, 0.11446777, 0.11590406, 0.11702887, 0.11783286, 0.11838114, 0.11853, 0.11841639, 0.11788959, 0.1171256, 0.11610432, 0.11482051, 0.1132508, 0.11140878, 0.10943488, 0.10728747, 0.10495952, 0.10246481, 0.09993483, 0.09720396, 0.0944128, 0.09156945, 0.08863322, 0.08564543, 0.082602, 0.07954082, 0.07647418, 0.07338251, 0.07029227, 0.06719918, 0.06411436, 0.06106016, 0.05802518, 0.05503441, 0.05207936, 0.04914881, 0.04627113, 0.04344932, 0.0406615, 0.03795784, 0.03530762, 0.03269165, 0.03015797, 0.02768421, 0.02525671, 0.02291827, 0.02065439, 0.01838965, 0.01632704, 0.01433576, 0.0122789, 0.01000166, 0.00710112, 0.0046218, 0.00275976, 0.00126291, 0.00032267, 0.0, -0.00031745, -0.00119506, -0.00249968, -0.0040402, -0.00605796, -0.00861062, -0.01064741, -0.01229951, -0.01388914, -0.01542391, -0.01691326, -0.018543, -0.02029739, -0.02206055, -0.02383464, -0.02571335, -0.02764445, -0.02960227, -0.03162977, -0.03370972, -0.03582576, -0.03799324, -0.04020728, -0.04245258, -0.04473761, -0.04705148, -0.04938937, -0.05176912, -0.05417055, -0.0565876, -0.05901518, -0.06144042, -0.0638658, -0.06627274, -0.06864841, -0.07099827, -0.07329403, -0.07554549, -0.07773395, -0.07982626, -0.08182466, -0.08370902, -0.08544832, -0.08703499, -0.08846568, -0.08971729, -0.09075297, -0.09157733, -0.0921612, -0.09245766, -0.09247435, -0.09216287, -0.09149343, -0.09046835, -0.08903859, -0.08720695, -0.08496013, -0.08226184, -0.07911059, -0.07550249, -0.07147457, -0.0670522, -0.06234033, -0.05743173, -0.05235704, -0.04718857, -0.04196804, -0.03681547, -0.03177633, -0.02692515, -0.02230712, -0.01797987, -0.01398064, -0.01032443, -0.00703746, -0.00411605, -0.00155747, 0.00059313, 0.00235599, 0.00375549, 0.00481536, 0.00553358, 0.00595799, 0.00609949, 0.00599693, 0.00565716, 0.00513478, 0.00447175, 0.00377384, 0.00309945, 0.00245775, 0.00185661, 0.00130603, 0.00082003, 0.00040675, 6.986e-05, -0.00017578, -0.00031253, -0.00037] + relative_thickness: 0.211 + aerodynamic_center: 0.25 + description: FFA-W3-211 (Re=1.00e+07)FFA-W3 airfoil data for 10 MW sized rotor, computed using EllipSys2D v16.0, 70% free transition, 30% fully turbulent, 360 deg extrapolated using AirfoilPreppy, no 3D correction. F Zahle, DTU Wind Energy 11 May 2017 + polars: + - configuration: Default + re: 10000000.0 + c_l: + grid: &id007 [-3.14, -3.101699414, -3.061806173, -3.021912933, -2.98202, -2.94213, -2.902233213, -2.862339973, -2.82245, -2.78255, -2.74266, -2.70277, -2.662873773, -2.622980533, -2.583087293, -2.510780795, -2.438474298, -2.3661678, -2.293861303, -2.221554805, -2.149248307, -2.07694181, -2.004635312, -1.932328815, -1.860022317, -1.78771582, -1.715409322, -1.643102824, -1.570796327, -1.498489829, -1.426183332, -1.353876834, -1.281570336, -1.209263839, -1.136957341, -1.064650844, -0.992344346, -0.920037849, -0.847731351, -0.775424853, -0.703118356, -0.630811858, -0.558505361, -0.488692191, -0.41887902, -0.34906585, -0.314159265, -0.27925268, -0.244346095, -0.20943951, -0.174532925, -0.13962634, -0.104719755, -0.06981317, -0.034906585, -0.017453293, 0, 0.017453293, 0.034906585, 0.052359878, 0.06981317, 0.087266463, 0.104719755, 0.122173048, 0.13962634, 0.157079633, 0.174532925, 0.191986218, 0.20943951, 0.226892803, 0.244346095, 0.261799388, 0.27925268, 0.314159265, 0.34906585, 0.41887902, 0.488692191, 0.558505361, 0.630811858, 0.703118356, 0.775424853, 0.847731351, 0.920037849, 0.992344346, 1.064650844, 1.136957341, 1.209263839, 1.281570336, 1.353876834, 1.426183332, 1.498489829, 1.570796327, 1.643102824, 1.715409322, 1.78771582, 1.860022317, 1.932328815, 2.004635312, 2.07694181, 2.149248307, 2.221554805, 2.293861303, 2.3661678, 2.438474298, 2.510780795, 2.583087293, 2.622980533, 2.662873773, 2.702767013, 2.742660253, 2.782553493, 2.822446733, 2.862339973, 2.902233213, 2.942126453, 2.982019693, 3.021912933, 3.061806173, 3.101699414, 3.14] + values: [0.0, 0.05402504999999973, 0.1080501000000001, 0.1620751499999998, 0.2161002000000001, 0.2701252499999999, 0.3241502999999996, 0.3781753499999999, 0.4322003999999997, 0.4862254499999999, 0.5402504999999997, 0.5942755500000001, 0.6483005999999998, 0.70232565, 0.7563506999999998, 0.7318783269239915, 0.7065528355994307, 0.6776040044026928, 0.6433295384757597, 0.6027662380766498, 0.5555015408989838, 0.5015565175320579, 0.441306592466731, 0.3754225708324188, 0.3048226261816518, 0.2306301410703767, 0.1541346331849047, 0.0767543574378533, 6.938893903907228e-17, -0.07675435743785307, -0.1541346331849047, -0.2306301410703764, -0.3048226261816516, -0.3754225708324188, -0.4413065924667308, -0.5015565175320579, -0.5555015408989837, -0.6027662380766498, -0.6433295384757594, -0.6776040044026929, -0.7065528355994307, -0.7318783269239915, -0.7563507000000002, -0.85636, -1.18292, -1.23596, -1.22536, -1.20476, -1.18332, -1.10093, -0.882085, -0.62981, -0.376701, -0.121772, 0.128101, 0.25192, 0.375354, 0.498281, 0.6205240000000001, 0.742004, 0.862375, 0.98114, 1.09662, 1.20904, 1.3168, 1.42209, 1.52361, 1.61988, 1.70937, 1.78681, 1.8429, 1.85313, 1.80951, 1.66033, 1.56152, 1.43327, 1.29062, 1.080501, 1.045540467034274, 1.009361193713472, 0.9680057205752755, 0.9190421978225134, 0.8610946258237854, 0.7935736298556911, 0.7165093107600827, 0.6304379892381867, 0.5363179583320269, 0.4354608945452166, 0.3294716301005378, 0.2201923331212924, 0.1096490820540758, 9.71445146547012e-17, -0.07675435743785305, -0.1541346331849047, -0.2306301410703764, -0.3048226261816516, -0.3754225708324188, -0.4413065924667307, -0.5015565175320579, -0.5555015408989835, -0.6027662380766498, -0.6433295384757597, -0.6776040044026928, -0.7065528355994307, -0.7318783269239915, -0.7563507000000002, -0.70232565, -0.6483005999999998, -0.5942755500000001, -0.5402504999999997, -0.4862254499999999, -0.4322004000000002, -0.3781753499999999, -0.3241503000000002, -0.2701252499999999, -0.2161002000000001, -0.1620751499999998, -0.1080501000000001, -0.05402504999999973, 4.85722573273506e-18] + c_d: + grid: *id007 + values: [0.02464146255885971, 0.0253381915760185, 0.02742386791262707, 0.03088494454883671, 0.03569894666004403, 0.05599104793704501, 0.08143456941199648, 0.111118119977472, 0.1448529823401942, 0.1824246843171338, 0.2235943631517934, 0.2681002849817088, 0.3156595097900088, 0.3659696912483095, 0.418711, 0.5194063216490634, 0.624878215320418, 0.7329268692419378, 0.8412988626197737, 0.9477341973794456, 1.050013466313862, 1.146004172998905, 1.233705236549658, 1.311288752188593, 1.37713813588963, 1.429881856853057, 1.468422053679695, 1.491957436925499, 1.5, 1.491957436925499, 1.468422053679695, 1.429881856853057, 1.37713813588963, 1.311288752188593, 1.233705236549658, 1.146004172998905, 1.050013466313863, 0.9477341973794456, 0.8412988626197743, 0.7329268692419378, 0.6248782153204183, 0.5194063216490632, 0.418711, 0.286909, 0.139597, 0.0834459, 0.0650916, 0.0488819, 0.0341723, 0.0213247, 0.0138586, 0.0107541, 0.008815799999999999, 0.00702184, 0.00663047, 0.00664363, 0.00670056, 0.00680819, 0.00697859, 0.00720311, 0.007514809999999999, 0.00795847, 0.00872169, 0.009683530000000001, 0.0109695, 0.0122748, 0.0136859, 0.0152881, 0.0171709, 0.0197355, 0.0236792, 0.0309403, 0.0430319, 0.0773041, 0.112017, 0.18408, 0.275892, 0.418711, 0.5194063216490632, 0.6248782153204185, 0.7329268692419378, 0.8412988626197743, 0.9477341973794456, 1.050013466313863, 1.146004172998905, 1.233705236549658, 1.311288752188593, 1.37713813588963, 1.429881856853057, 1.468422053679695, 1.491957436925499, 1.5, 1.491957436925499, 1.468422053679695, 1.429881856853057, 1.37713813588963, 1.311288752188593, 1.233705236549658, 1.146004172998905, 1.050013466313863, 0.9477341973794456, 0.8412988626197737, 0.7329268692419378, 0.624878215320418, 0.5194063216490634, 0.418711, 0.3659696912483095, 0.3156595097900088, 0.2681002849817088, 0.2235943631517934, 0.1824246843171338, 0.1448529823401946, 0.111118119977472, 0.08143456941199678, 0.05599104793704501, 0.03569894666004403, 0.03088494454883671, 0.02742386791262707, 0.0253381915760185, 0.02464146255885971] + c_m: + grid: *id007 + values: [0.0, 0.09142857142857111, 0.1828571428571434, 0.2742857142857145, 0.3657142857142855, 0.3919171380083344, 0.3789845588216693, 0.3660519796350041, 0.353119400448339, 0.3476784059442646, 0.3647121654879618, 0.3817459250316594, 0.3987796845753567, 0.4158134441190544, 0.4195454592054533, 0.4228655348597155, 0.4263227290676669, 0.4316310237504245, 0.436939318433182, 0.4438932390944983, 0.4517132786918981, 0.458974087487912, 0.4644773137652843, 0.4699805400426567, 0.4709637155505512, 0.4710052138148045, 0.4682373893923625, 0.4614896911637687, 0.4547419929351749, 0.440261605201769, 0.4257812174683632, 0.4082106877197933, 0.3884588812546371, 0.3681533816888277, 0.3451901552398833, 0.322226928790939, 0.2986411272359326, 0.2748572336017246, 0.2512805789575005, 0.2280976783942457, 0.2049147778309909, 0.1541624777852183, 0.101368, 0.0652698, 0.01647420000000005, -0.0035156, -0.006716600000000001, -0.00881275, -0.0110092, -0.02268789999999999, -0.0439675, -0.0575595, -0.0674747, -0.07680390000000001, -0.08283, -0.08534420000000001, -0.0877721, -0.0901057, -0.0923415, -0.094469, -0.0964635, -0.0982801, -0.0997729, -0.100947, -0.1016336, -0.1020701, -0.1021297, -0.1017353, -0.100868, -0.09936350000000001, -0.0971987, -0.0940975, -0.0914393, -0.09242, -0.09870720000000001, -0.117702, -0.145658, -0.18266, -0.2091344193953699, -0.2353353726197231, -0.2578445325353481, -0.2803536924509731, -0.301631395515415, -0.3222609633950237, -0.3424694255055559, -0.3613544123418473, -0.3802393991781386, -0.3970410534414668, -0.4134086800854276, -0.4284443809438795, -0.4415931869395273, -0.4547419929351749, -0.4614896911637686, -0.4682373893923625, -0.4710052138148045, -0.4709637155505513, -0.4699805400426568, -0.4644773137652844, -0.458974087487912, -0.4517132786918981, -0.4438932390944983, -0.436939318433182, -0.4316310237504245, -0.4263227290676669, -0.4228655348597155, -0.4195454592054533, -0.4158134441190544, -0.3987796845753567, -0.3817459250316594, -0.3647121654879618, -0.3476784059442646, -0.3702622575911958, -0.4060519796350041, -0.4418417016788119, -0.4776314237226202, -0.457142857142857, -0.3428571428571431, -0.2285714285714291, -0.1142857142857139, 0.0] + - name: FFA-W3-241 + coordinates: + x: [1.0, 0.99944304, 0.99812049, 0.99569352, 0.99230484, 0.98802844, 0.98281508, 0.97666422, 0.96964069, 0.96174313, 0.95297315, 0.94338928, 0.93301284, 0.92185147, 0.90995468, 0.89736121, 0.88408503, 0.8701629, 0.85565276, 0.84057695, 0.82497463, 0.80889455, 0.79236237, 0.77542101, 0.75812546, 0.7405018, 0.72259209, 0.70444539, 0.68608843, 0.66757021, 0.64892678, 0.63018643, 0.61140138, 0.59259673, 0.57380843, 0.5550757, 0.53641763, 0.51787958, 0.49948103, 0.48125155, 0.46322225, 0.44540666, 0.42784323, 0.41053864, 0.39352525, 0.37681123, 0.36041977, 0.34436494, 0.32865846, 0.31331898, 0.29834798, 0.2837658, 0.26956679, 0.25577362, 0.2423778, 0.22939648, 0.21681735, 0.20465763, 0.19290757, 0.18157496, 0.17065819, 0.16014896, 0.15005511, 0.14035465, 0.1310675, 0.12216148, 0.11365876, 0.10553619, 0.09779065, 0.09042902, 0.08341621, 0.07677403, 0.0704692, 0.06450016, 0.05888182, 0.05356799, 0.04857581, 0.04389793, 0.03949498, 0.03539484, 0.03157626, 0.02800644, 0.02471592, 0.02168071, 0.01886319, 0.01629514, 0.0139662, 0.01181764, 0.00988361, 0.00818368, 0.00663128, 0.00524853, 0.00408271, 0.00308998, 0.00219098, 0.00145967, 0.00096333, 0.00059878, 0.00028988, 7.804e-05, 0.0, 7.807e-05, 0.00029009, 0.00059937, 0.00096448, 0.00146264, 0.00219661, 0.00309879, 0.00409516, 0.00526774, 0.00665839, 0.00821941, 0.00993095, 0.01187982, 0.01404463, 0.01639219, 0.01898469, 0.02182867, 0.02489252, 0.02822001, 0.03182924, 0.03568998, 0.03984236, 0.04430035, 0.04903788, 0.05410025, 0.05948747, 0.06518787, 0.07124791, 0.07764648, 0.08439704, 0.0915234, 0.09900711, 0.10688721, 0.11514762, 0.12380644, 0.13287211, 0.14233176, 0.1522146, 0.16249918, 0.17321393, 0.18434125, 0.19590296, 0.20788328, 0.22029378, 0.23312344, 0.24637487, 0.26004146, 0.27412439, 0.28861129, 0.30349962, 0.3187741, 0.33443448, 0.35045732, 0.36684322, 0.38356093, 0.40060975, 0.41795607, 0.4355933, 0.4534925, 0.47163211, 0.48999236, 0.50853595, 0.52724867, 0.5460886, 0.5650309, 0.58404504, 0.603088, 0.62213765, 0.64114752, 0.66008031, 0.67890619, 0.69757164, 0.71604492, 0.73429135, 0.75225234, 0.76989792, 0.78719153, 0.80407383, 0.82051349, 0.83646946, 0.85189026, 0.86674791, 0.8810097, 0.89461041, 0.90752456, 0.9197304, 0.9311753, 0.94182765, 0.95167536, 0.96067486, 0.96878747, 0.97601191, 0.98233053, 0.98768615, 0.99208631, 0.99557391, 0.99806302, 0.99942968, 1.0] + y: [0.00425, 0.0043621, 0.00462832, 0.00511699, 0.00579959, 0.00666146, 0.00771282, 0.0089541, 0.01037253, 0.01196864, 0.01374233, 0.01568187, 0.01778563, 0.02006929, 0.0225171, 0.02513781, 0.02790923, 0.03084911, 0.03393611, 0.03716418, 0.04052857, 0.04400982, 0.04761716, 0.05132667, 0.05512297, 0.05899393, 0.06293412, 0.06690084, 0.07088321, 0.07486708, 0.07883497, 0.08275436, 0.08661408, 0.09037299, 0.09402539, 0.09754917, 0.10092636, 0.10414685, 0.10719326, 0.11006231, 0.1127122, 0.11514729, 0.11735341, 0.11931701, 0.12102638, 0.12248809, 0.12367942, 0.12460233, 0.12523852, 0.12560509, 0.1256738, 0.12546547, 0.12498975, 0.12423636, 0.12323884, 0.12200236, 0.12053786, 0.11886654, 0.11699332, 0.11492977, 0.11269298, 0.110298, 0.10776785, 0.10510781, 0.10233142, 0.09945032, 0.09649044, 0.09345853, 0.09036359, 0.08722175, 0.0840345, 0.08082678, 0.07759443, 0.07434789, 0.07110954, 0.06787343, 0.06465344, 0.06145399, 0.05826012, 0.0551095, 0.05199557, 0.04891845, 0.04589051, 0.04289625, 0.03991914, 0.03700233, 0.03418463, 0.03137187, 0.0286109, 0.02603794, 0.02342947, 0.02076107, 0.01830451, 0.015951, 0.01327076, 0.0104986, 0.00746215, 0.00453721, 0.00204453, 0.00050657, 0.0, -0.00049018, -0.00184125, -0.00381822, -0.00605713, -0.00870563, -0.01122916, -0.01342212, -0.01534366, -0.01716693, -0.01909642, -0.02130654, -0.02351414, -0.02579914, -0.02815987, -0.03053974, -0.03296857, -0.03549058, -0.0380747, -0.04072568, -0.04345995, -0.04623151, -0.04907034, -0.05196961, -0.05490886, -0.05790431, -0.06095001, -0.06402491, -0.06712837, -0.07024411, -0.07337047, -0.07649115, -0.07959568, -0.08268285, -0.08571902, -0.08870503, -0.09161742, -0.09443777, -0.09716583, -0.09976981, -0.10223862, -0.10454454, -0.10668939, -0.10863043, -0.11037325, -0.11187776, -0.11314131, -0.11414886, -0.11486604, -0.11529721, -0.11537968, -0.11513331, -0.11450572, -0.11349774, -0.11208121, -0.11023393, -0.10793345, -0.10519348, -0.10197553, -0.0982976, -0.09414081, -0.08952202, -0.08447312, -0.07905685, -0.07331017, -0.0672996, -0.06109331, -0.05477058, -0.04842523, -0.04213791, -0.03600811, -0.03012656, -0.02457508, -0.01942136, -0.01470107, -0.01045419, -0.00673447, -0.00355842, -0.00093374, 0.00117919, 0.00284598, 0.00409407, 0.00495249, 0.00546535, 0.00561958, 0.00547727, 0.00504714, 0.00440395, 0.00360867, 0.00270812, 0.0018027, 0.00091285, 5.718e-05, -0.00074311, -0.00146131, -0.00207989, -0.00258907, -0.00296293, -0.00317197, -0.00326] + relative_thickness: 0.241 + aerodynamic_center: 0.25 + description: FFA-W3-241 (Re=1.00e+07)FFA-W3 airfoil data for 10 MW sized rotor, computed using EllipSys2D v16.0, 70% free transition, 30% fully turbulent, 360 deg extrapolated using AirfoilPreppy, no 3D correction. F Zahle, DTU Wind Energy 11 May 2017 + polars: + - configuration: Default + re: 10000000.0 + c_l: + grid: *id007 + values: [0.0, 0.05817799999999972, 0.1163560000000001, 0.1745339999999998, 0.2327120000000001, 0.2908899999999999, 0.3490679999999995, 0.4072459999999999, 0.4654239999999996, 0.523602, 0.5817799999999997, 0.6399580000000001, 0.6981359999999998, 0.7563140000000002, 0.8144919999999998, 0.7792464302724209, 0.7451071591370395, 0.7088137481222476, 0.6683458115525404, 0.6225263575881583, 0.5707951681755026, 0.5130692040229429, 0.4496493863351846, 0.3811527280710469, 0.3084584943135641, 0.2326621563088236, 0.1550337076275116, 0.07697853256272918, 6.938893903907228e-17, -0.07697853256272895, -0.1550337076275116, -0.2326621563088234, -0.3084584943135639, -0.3811527280710469, -0.4496493863351844, -0.5130692040229429, -0.5707951681755025, -0.6225263575881583, -0.6683458115525401, -0.7088137481222476, -0.7451071591370394, -0.7792464302724209, -0.8144920000000002, -1.077809, -1.12692, -1.1448, -1.12797, -1.09392, -1.05961, -1.031215, -0.937059, -0.673795, -0.403909, -0.14226, 0.1158039, 0.243824, 0.371129, 0.497655, 0.6233420000000001, 0.747981, 0.871372, 0.993202, 1.11325, 1.23037, 1.34496, 1.45407, 1.55911, 1.65779, 1.74834, 1.82666, 1.88831, 1.92579, 1.92722, 1.80055, 1.63088, 1.43345, 1.28805, 1.16356, 1.113209186103459, 1.064438798767199, 1.012591068746068, 0.9547797307893432, 0.8893233679830833, 0.8154216688221464, 0.7329560057470612, 0.6423562661931204, 0.5445038972443527, 0.4406549918765199, 0.3323745090126048, 0.2214767251821594, 0.1099693322324699, 9.71445146547012e-17, -0.07697853256272895, -0.1550337076275116, -0.2326621563088234, -0.3084584943135639, -0.3811527280710469, -0.4496493863351842, -0.5130692040229429, -0.5707951681755022, -0.6225263575881583, -0.6683458115525404, -0.7088137481222476, -0.7451071591370395, -0.7792464302724209, -0.8144920000000002, -0.7563140000000002, -0.6981359999999998, -0.6399580000000001, -0.5817799999999997, -0.523602, -0.4654240000000002, -0.4072459999999999, -0.3490680000000003, -0.2908899999999999, -0.2327120000000001, -0.1745339999999998, -0.1163560000000001, -0.05817799999999972, 0.0] + c_d: + grid: *id007 + values: [0.01177544706410594, 0.01248241260198391, 0.01459878240467653, 0.01811096054673407, 0.02299639088779405, 0.02922369647552087, 0.05381969831066666, 0.08379399231618556, 0.1178630778979731, 0.1558119510371117, 0.1974011487998909, 0.242368269760347, 0.2904296400140884, 0.3412821141889975, 0.394605, 0.4964515212818632, 0.6031945752737573, 0.7126277071805793, 0.8224902609928115, 0.9305144490385059, 1.034472560839366, 1.132223326418828, 1.221756466908459, 1.301234503184361, 1.369030950546305, 1.423764102933106, 1.464325702272211, 1.489903895366822, 1.5, 1.489903895366822, 1.464325702272211, 1.423764102933106, 1.369030950546305, 1.301234503184361, 1.22175646690846, 1.132223326418828, 1.034472560839366, 0.9305144490385059, 0.8224902609928122, 0.7126277071805793, 0.6031945752737576, 0.4964515212818629, 0.394605, 0.222521, 0.151592, 0.0969875, 0.0774353, 0.0612223, 0.0466721, 0.0330216, 0.0202688, 0.01167894, 0.00917822, 0.00838762, 0.00810497, 0.008082470000000001, 0.00812783, 0.008240289999999999, 0.00841819, 0.00867336, 0.00900857, 0.00944734, 0.00997828, 0.01070204, 0.0115279, 0.0126944, 0.0139646, 0.015453, 0.0172426, 0.0196113, 0.0229324, 0.0279527, 0.0360913, 0.0653426, 0.1045871, 0.191485, 0.286294, 0.394605, 0.4964515212818629, 0.6031945752737579, 0.7126277071805793, 0.8224902609928122, 0.9305144490385059, 1.034472560839366, 1.132223326418828, 1.22175646690846, 1.301234503184361, 1.369030950546305, 1.423764102933106, 1.464325702272211, 1.489903895366822, 1.5, 1.489903895366822, 1.464325702272211, 1.423764102933106, 1.369030950546305, 1.301234503184361, 1.22175646690846, 1.132223326418828, 1.034472560839367, 0.9305144490385059, 0.8224902609928115, 0.7126277071805793, 0.6031945752737573, 0.4964515212818632, 0.394605, 0.3412821141889975, 0.2904296400140884, 0.242368269760347, 0.1974011487998909, 0.1558119510371117, 0.1178630778979735, 0.08379399231618556, 0.05381969831066696, 0.02922369647552087, 0.02299639088779405, 0.01811096054673407, 0.01459878240467653, 0.01248241260198391, 0.01177544706410594] + c_m: + grid: *id007 + values: [0.0, 0.09142857142857111, 0.1828571428571434, 0.2742857142857145, 0.3657142857142855, 0.3956763450520955, 0.3887584971354481, 0.3818406492188006, 0.3749228013021533, 0.3740843285591013, 0.3914839813368354, 0.4088836341145699, 0.4262832868923042, 0.4436829396700386, 0.4453716275543733, 0.4443643566491176, 0.4435983994287483, 0.4460901769543472, 0.4485819544799459, 0.4536989103045144, 0.4601975389180142, 0.4663277194153696, 0.4712999201191282, 0.4762721208228869, 0.4770470794649723, 0.4769476126775422, 0.4740887008224939, 0.467320575121653, 0.4605524494208121, 0.4450945670669362, 0.4296366847130603, 0.4112541220321606, 0.3908070791204207, 0.3698777372479554, 0.3466333603640094, 0.3233889834800633, 0.2998354483726866, 0.2761835447396729, 0.2527992279113344, 0.2299233260118784, 0.2070474241124226, 0.1456060142046668, 0.0813079, 0.0459169, 0.01901030000000003, 0.0006315499999999995, -0.00342245, -0.0058652, -0.00652125, -0.007554099999999999, -0.0224323, -0.055829, -0.0715901, -0.0812253, -0.08892019999999999, -0.0923527, -0.0955637, -0.0985678, -0.1013918, -0.1040302, -0.106451, -0.108633, -0.110572, -0.112141, -0.113368, -0.113958, -0.114027, -0.113365, -0.111865, -0.109351, -0.1060607, -0.1023772, -0.09886919999999999, -0.0949704, -0.0999569, -0.125888, -0.154528, -0.183965, -0.2109869139440005, -0.2376791550670783, -0.2599208131076984, -0.2821624711483185, -0.3032292136924059, -0.3236775796593707, -0.3438049093730668, -0.3629232680050612, -0.3820416266370555, -0.3994389100207872, -0.4164776360611308, -0.4323092709995288, -0.4464308602101705, -0.4605524494208121, -0.467320575121653, -0.4740887008224939, -0.4769476126775422, -0.4770470794649723, -0.4762721208228869, -0.4712999201191283, -0.4663277194153696, -0.4601975389180142, -0.4536989103045144, -0.4485819544799459, -0.4460901769543472, -0.4435983994287483, -0.4443643566491176, -0.4453716275543733, -0.4436829396700386, -0.4262832868923042, -0.4088836341145699, -0.3914839813368354, -0.3740843285591013, -0.3920656584450101, -0.4218406492188006, -0.4516156399925907, -0.4813906307663812, -0.457142857142857, -0.3428571428571431, -0.2285714285714291, -0.1142857142857139, 0.0] + - name: FFA-W3-270blend + coordinates: + x: [1.0, 0.99185, 0.98371, 0.97556, 0.96742, 0.95928, 0.95114, 0.94301, 0.93488, 0.92675, 0.91863, 0.91052, 0.90241, 0.8943, 0.8862, 0.8781, 0.87001, 0.86192, 0.85384, 0.84576, 0.83768, 0.8296, 0.82153, 0.81346, 0.80539, 0.79732, 0.78926, 0.7812, 0.77314, 0.76508, 0.75702, 0.74897, 0.74091, 0.73285, 0.7248, 0.71675, 0.70869, 0.70064, 0.69258, 0.68452, 0.67647, 0.66841, 0.66035, 0.65229, 0.64422, 0.63616, 0.62809, 0.62002, 0.61195, 0.60387, 0.5958, 0.58772, 0.57963, 0.57154, 0.56345, 0.55536, 0.54726, 0.53916, 0.53105, 0.52294, 0.51482, 0.5067, 0.49858, 0.49045, 0.48231, 0.47417, 0.46603, 0.45787, 0.44972, 0.44155, 0.43338, 0.42521, 0.41702, 0.40884, 0.40064, 0.39244, 0.38424, 0.37602, 0.36781, 0.35958, 0.35135, 0.34312, 0.33488, 0.32664, 0.31839, 0.31014, 0.30188, 0.29363, 0.28537, 0.27711, 0.26886, 0.2606, 0.25235, 0.24411, 0.23587, 0.22763, 0.21941, 0.2112, 0.20301, 0.19483, 0.18668, 0.17855, 0.17045, 0.16238, 0.15434, 0.14635, 0.1384, 0.1305, 0.12265, 0.11487, 0.10716, 0.09952, 0.09197, 0.08451, 0.07715, 0.06991, 0.0628, 0.05584, 0.04905, 0.04245, 0.03607, 0.02994, 0.02413, 0.01869, 0.0137, 0.00923, 0.0054, 0.00249, 0.00064, 0.0, 0.00089, 0.00355, 0.00749, 0.01224, 0.01762, 0.0234, 0.02952, 0.03592, 0.04253, 0.04932, 0.05615, 0.06309, 0.07018, 0.0774, 0.08474, 0.09218, 0.09973, 0.10736, 0.11507, 0.12286, 0.13073, 0.13866, 0.14664, 0.15469, 0.16279, 0.17093, 0.17911, 0.18733, 0.19559, 0.20387, 0.21219, 0.22053, 0.22889, 0.23726, 0.24566, 0.25406, 0.26248, 0.2709, 0.27933, 0.28777, 0.2962, 0.30464, 0.31308, 0.32151, 0.32994, 0.33836, 0.34678, 0.35518, 0.36358, 0.37196, 0.38033, 0.38869, 0.39703, 0.40536, 0.41366, 0.42195, 0.43023, 0.43848, 0.44671, 0.45493, 0.46312, 0.47129, 0.47944, 0.48757, 0.49567, 0.50376, 0.51182, 0.51986, 0.52788, 0.53589, 0.54387, 0.55184, 0.55979, 0.56773, 0.57566, 0.58358, 0.59149, 0.59939, 0.60729, 0.61518, 0.62308, 0.63098, 0.63888, 0.64679, 0.65471, 0.66263, 0.67057, 0.67853, 0.68649, 0.69448, 0.70248, 0.7105, 0.71854, 0.7266, 0.73468, 0.74278, 0.75091, 0.75905, 0.76722, 0.77541, 0.78362, 0.79186, 0.80012, 0.80839, 0.81669, 0.82499, 0.83332, 0.84165, 0.85, 0.85835, 0.86671, 0.87508, 0.88346, 0.89184, 0.90022, 0.90859, 0.91697, 0.92533, 0.93369, 0.94203, 0.95037, 0.95868, 0.96698, 0.97526, 0.98352, 0.99177, 1.0] + y: [0.00652, 0.00831, 0.0101, 0.01188, 0.01366, 0.01544, 0.01721, 0.01898, 0.02076, 0.02255, 0.02435, 0.02617, 0.02799, 0.02982, 0.03166, 0.0335, 0.03535, 0.03721, 0.03907, 0.04094, 0.04281, 0.04468, 0.04655, 0.04843, 0.05031, 0.05219, 0.05407, 0.05594, 0.05782, 0.05969, 0.06157, 0.06343, 0.0653, 0.06716, 0.06901, 0.07086, 0.0727, 0.07453, 0.07636, 0.07817, 0.07997, 0.08176, 0.08355, 0.08531, 0.08707, 0.08881, 0.09054, 0.09225, 0.09395, 0.09562, 0.09729, 0.09893, 0.10055, 0.10215, 0.10373, 0.10529, 0.10683, 0.10834, 0.10983, 0.11129, 0.11272, 0.11413, 0.11551, 0.11686, 0.11817, 0.11946, 0.1207, 0.12191, 0.12307, 0.1242, 0.12529, 0.12633, 0.12733, 0.12828, 0.12918, 0.13003, 0.13083, 0.13157, 0.13226, 0.13288, 0.13345, 0.13395, 0.13438, 0.13474, 0.13502, 0.13523, 0.13537, 0.13541, 0.13537, 0.13524, 0.13501, 0.13469, 0.13426, 0.13373, 0.13308, 0.13233, 0.13146, 0.13048, 0.12936, 0.12811, 0.12672, 0.12518, 0.1235, 0.12167, 0.11969, 0.11754, 0.11522, 0.11274, 0.11008, 0.10724, 0.10422, 0.10101, 0.09759, 0.09398, 0.09014, 0.08609, 0.0818, 0.07727, 0.07247, 0.06739, 0.06196, 0.05624, 0.05049, 0.04439, 0.03792, 0.03107, 0.02383, 0.01614, 0.00809, -0.00019, -0.00845, -0.01641, -0.02407, -0.03122, -0.03781, -0.04403, -0.0499, -0.05547, -0.06076, -0.06581, -0.07063, -0.07523, -0.07962, -0.08382, -0.08782, -0.09164, -0.09527, -0.09873, -0.10201, -0.10512, -0.10805, -0.11082, -0.11341, -0.11584, -0.11811, -0.12022, -0.12218, -0.12397, -0.12562, -0.12711, -0.12846, -0.12966, -0.13073, -0.13166, -0.13245, -0.13312, -0.13365, -0.13406, -0.13435, -0.13451, -0.13455, -0.13447, -0.13428, -0.13397, -0.13354, -0.13301, -0.13236, -0.13161, -0.13075, -0.12978, -0.12871, -0.12753, -0.12626, -0.12489, -0.12341, -0.12185, -0.1202, -0.11845, -0.11662, -0.1147, -0.1127, -0.11061, -0.10845, -0.10621, -0.1039, -0.10152, -0.09907, -0.09656, -0.09399, -0.09137, -0.0887, -0.08599, -0.08323, -0.08044, -0.07761, -0.07476, -0.07188, -0.06898, -0.06607, -0.06315, -0.06024, -0.05732, -0.05441, -0.05152, -0.04864, -0.04579, -0.04297, -0.04019, -0.03745, -0.03476, -0.03213, -0.02955, -0.02704, -0.02459, -0.02222, -0.01993, -0.01771, -0.01559, -0.01356, -0.01163, -0.00982, -0.00814, -0.00656, -0.00511, -0.00377, -0.00254, -0.00143, -0.00044, 0.00045, 0.00121, 0.00185, 0.00237, 0.00275, 0.003, 0.0031, 0.00305, 0.00287, 0.00254, 0.00207, 0.00147, 0.00074, -0.00012, -0.00112, -0.00224, -0.00347, -0.00479, -0.00613] + relative_thickness: 0.27 + aerodynamic_center: 0.25 + description: FFA-W3-270blend (Re=1.00e+07)FFA-W3 airfoil data for 10 MW sized rotor, computed using EllipSys2D v16.0, 70% free transition, 30% fully turbulent, 360 deg extrapolated using AirfoilPreppy, no 3D correction. F Zahle, DTU Wind Energy 11 May 2017 + polars: + - configuration: Default + re: 10000000.0 + c_l: + grid: *id007 + values: [0.0, 0.06212899999999969, 0.1242580000000001, 0.1863869999999997, 0.2485160000000001, 0.3106449999999998, 0.3727739999999995, 0.4349029999999999, 0.4970319999999995, 0.5591609999999999, 0.6212899999999997, 0.683419, 0.7455479999999997, 0.8076770000000001, 0.8698059999999997, 0.8165994877207365, 0.7681195983700221, 0.7203990529680618, 0.6709524633842782, 0.6182782428591802, 0.5615751466576534, 0.5005693936664801, 0.435401383049361, 0.3665455794904564, 0.294749276481367, 0.220982292815904, 0.1463931471210668, 0.07226926649699138, 5.551115123125782e-17, -0.07226926649699114, -0.1463931471210668, -0.2209822928159038, -0.2947492764813668, -0.3665455794904564, -0.4354013830493607, -0.5005693936664801, -0.5615751466576534, -0.6182782428591802, -0.670952463384278, -0.720399052968062, -0.7681195983700218, -0.8165994877207366, -0.8698060000000001, -1.098365, -1.083388, -1.069897, -1.05454, -1.034316, -1.0836, -1.094892, -0.926646, -0.696755, -0.436276, -0.162516, 0.1070901, 0.239931, 0.371578, 0.502096, 0.631386, 0.759514, 0.886379, 1.011723, 1.1343, 1.25536, 1.37379, 1.48841, 1.59782, 1.70005, 1.7919, 1.86782, 1.92687, 1.90901, 1.88548, 1.72106, 1.54737, 1.37176, 1.33611, 1.24258, 1.16657069674391, 1.097313711957174, 1.029141504240088, 0.9585035191203972, 0.8832546326559717, 0.8022502095109334, 0.7150991338092573, 0.6220019757848009, 0.5236365421292234, 0.4210703949733812, 0.3156889897370054, 0.2091330673158098, 0.1032418092814159, 8.326672684688674e-17, -0.07226926649699114, -0.1463931471210668, -0.2209822928159038, -0.2947492764813668, -0.3665455794904564, -0.4354013830493606, -0.5005693936664801, -0.5615751466576532, -0.6182782428591802, -0.6709524633842782, -0.7203990529680618, -0.7681195983700221, -0.8165994877207365, -0.8698060000000001, -0.8076770000000001, -0.7455479999999997, -0.683419, -0.6212899999999997, -0.5591609999999999, -0.4970320000000003, -0.4349029999999999, -0.3727740000000002, -0.3106449999999998, -0.2485160000000001, -0.1863869999999997, -0.1242580000000001, -0.06212899999999969, 0.0] + c_d: + grid: *id007 + values: [0.01545145617525337, 0.01610777849333327, 0.01807252594664354, 0.02133302578443705, 0.02586825350874664, 0.0328883659372791, 0.05680723323792564, 0.08471401060447561, 0.1164322402549705, 0.1517613784098523, 0.1904780692421837, 0.2323375637112758, 0.2770752742559843, 0.3244084554599586, 0.374038, 0.4688206353049151, 0.5681448033676435, 0.669952728182786, 0.7721361869547816, 0.8725804326764182, 0.9692082460346432, 1.060023197499036, 1.143151216970164, 1.2168796037278, 1.279692662884011, 1.330303224997329, 1.367679391470503, 1.391065948041092, 1.4, 1.391065948041092, 1.367679391470503, 1.330303224997329, 1.279692662884011, 1.2168796037278, 1.143151216970164, 1.060023197499036, 0.9692082460346436, 0.8725804326764182, 0.772136186954782, 0.669952728182786, 0.5681448033676437, 0.4688206353049149, 0.374038, 0.218804, 0.159821, 0.107443, 0.0869038, 0.0684434, 0.0473338, 0.0308488, 0.0198433, 0.0143943, 0.01154858, 0.0102638, 0.009755139999999999, 0.00967083, 0.00967746, 0.00976408, 0.00992886, 0.010161, 0.01045406, 0.01082305, 0.0113994, 0.0119786, 0.0126691, 0.01353, 0.014604, 0.0159672, 0.0177673, 0.0203501, 0.0238496, 0.0323572, 0.042586, 0.07671539999999999, 0.119141, 0.201888, 0.279811, 0.374038, 0.4688206353049149, 0.568144803367644, 0.669952728182786, 0.772136186954782, 0.8725804326764182, 0.9692082460346436, 1.060023197499036, 1.143151216970165, 1.2168796037278, 1.279692662884011, 1.330303224997329, 1.367679391470503, 1.391065948041092, 1.4, 1.391065948041092, 1.367679391470503, 1.330303224997329, 1.279692662884011, 1.2168796037278, 1.143151216970165, 1.060023197499036, 0.9692082460346441, 0.8725804326764182, 0.7721361869547816, 0.669952728182786, 0.5681448033676435, 0.4688206353049151, 0.374038, 0.3244084554599586, 0.2770752742559843, 0.2323375637112758, 0.1904780692421837, 0.1517613784098523, 0.1164322402549709, 0.08471401060447561, 0.05680723323792593, 0.0328883659372791, 0.02586825350874664, 0.02133302578443705, 0.01807252594664354, 0.01610777849333327, 0.01545145617525337] + c_m: + grid: *id007 + values: [0.0, 0.09142857142857111, 0.1828571428571434, 0.2742857142857145, 0.3657142857142855, 0.398737801088277, 0.3967182828295202, 0.3946987645707634, 0.3926792463120065, 0.3954394359195705, 0.4125387491260962, 0.4296380623326223, 0.4467373755391482, 0.4638366887456743, 0.4618649693614473, 0.4533531927531447, 0.4452312591985079, 0.4423722068683588, 0.4395131545382098, 0.4407199239530665, 0.4440665995495052, 0.4473877569319844, 0.4506287142134481, 0.4538696714949119, 0.4537721512199265, 0.4529791147873474, 0.4497339697805277, 0.4430150042935336, 0.4362960388065394, 0.4217990029204757, 0.4073019670344121, 0.3901952202168646, 0.3712463245065051, 0.3519042921503085, 0.3306752038940939, 0.3094461156378793, 0.288154029724106, 0.2668418991011094, 0.2457600706579958, 0.2251158163566598, 0.2044715620553239, 0.1395658926964592, 0.07138159999999999, 0.0439981, 0.02166040000000002, 0.0042194, -0.0003518499999999999, -0.00333715, -0.0028317, -0.005556199999999997, -0.02951695, -0.04821780000000001, -0.06483219999999999, -0.0791866, -0.0904066, -0.0951728, -0.0995328, -0.103549, -0.1072544, -0.11068, -0.113846, -0.116729, -0.119232, -0.121448, -0.123281, -0.124605, -0.125264, -0.125048, -0.1237, -0.120926, -0.117251, -0.109308, -0.105246, -0.102916, -0.110171, -0.134308, -0.157774, -0.184317, -0.2100189556620827, -0.2353116690528524, -0.2550796117808968, -0.2748475545089412, -0.2934552427836259, -0.3114522708197002, -0.3292470257762263, -0.3464060653398862, -0.363565104903546, -0.3794935737543194, -0.3951656737065747, -0.4098287562719499, -0.4230623975392447, -0.4362960388065394, -0.4430150042935335, -0.4497339697805277, -0.4529791147873474, -0.4537721512199265, -0.4538696714949119, -0.4506287142134482, -0.4473877569319844, -0.4440665995495052, -0.4407199239530665, -0.4395131545382098, -0.4423722068683588, -0.4452312591985079, -0.4533531927531447, -0.4618649693614473, -0.4638366887456743, -0.4467373755391482, -0.4296380623326223, -0.4125387491260962, -0.3954394359195705, -0.4098221034548635, -0.4346987645707633, -0.4595754256866629, -0.4844520868025629, -0.457142857142857, -0.3428571428571431, -0.2285714285714291, -0.1142857142857139, 0.0] + - name: FFA-W3-301 + coordinates: + x: [1.0, 0.99944304, 0.99812049, 0.99569352, 0.99230484, 0.98802844, 0.98281508, 0.97666422, 0.96964069, 0.96174313, 0.95297315, 0.94338928, 0.93301284, 0.92185147, 0.90995468, 0.89736121, 0.88408503, 0.8701629, 0.85565276, 0.84057695, 0.82497463, 0.80889455, 0.79236237, 0.77542101, 0.75812546, 0.7405018, 0.72259209, 0.70444539, 0.68608843, 0.66757021, 0.64892678, 0.63018643, 0.61140138, 0.59259673, 0.57380843, 0.5550757, 0.53641763, 0.51787958, 0.49948103, 0.48125155, 0.46322225, 0.44540666, 0.42784323, 0.41053864, 0.39352525, 0.37681123, 0.36041977, 0.34436494, 0.32865846, 0.31331898, 0.29834798, 0.2837658, 0.26956679, 0.25577362, 0.2423778, 0.22939648, 0.21681735, 0.20465763, 0.19290757, 0.18157496, 0.17065819, 0.16014896, 0.15005511, 0.14035465, 0.1310675, 0.12216148, 0.11365876, 0.10553619, 0.09779065, 0.09042902, 0.08341621, 0.07677403, 0.0704692, 0.06450016, 0.05888182, 0.05356799, 0.04857581, 0.04389793, 0.03949498, 0.03539484, 0.03157626, 0.02800644, 0.02471592, 0.02168071, 0.01886319, 0.01629514, 0.0139662, 0.01181764, 0.00988361, 0.00818368, 0.00663128, 0.00524853, 0.00408271, 0.00308998, 0.00219098, 0.00145967, 0.00096333, 0.00059878, 0.00028988, 7.804e-05, 0.0, 7.807e-05, 0.00029009, 0.00059937, 0.00096448, 0.00146264, 0.00219661, 0.00309879, 0.00409516, 0.00526774, 0.00665839, 0.00821941, 0.00993095, 0.01187982, 0.01404463, 0.01639219, 0.01898469, 0.02182867, 0.02489252, 0.02822001, 0.03182924, 0.03568998, 0.03984236, 0.04430035, 0.04903788, 0.05410025, 0.05948747, 0.06518787, 0.07124791, 0.07764648, 0.08439704, 0.0915234, 0.09900711, 0.10688721, 0.11514762, 0.12380644, 0.13287211, 0.14233176, 0.1522146, 0.16249918, 0.17321393, 0.18434125, 0.19590296, 0.20788328, 0.22029378, 0.23312344, 0.24637487, 0.26004146, 0.27412439, 0.28861129, 0.30349962, 0.3187741, 0.33443448, 0.35045732, 0.36684322, 0.38356093, 0.40060975, 0.41795607, 0.4355933, 0.4534925, 0.47163211, 0.48999236, 0.50853595, 0.52724867, 0.5460886, 0.5650309, 0.58404504, 0.603088, 0.62213765, 0.64114752, 0.66008031, 0.67890619, 0.69757164, 0.71604492, 0.73429135, 0.75225234, 0.76989792, 0.78719153, 0.80407383, 0.82051349, 0.83646946, 0.85189026, 0.86674791, 0.8810097, 0.89461041, 0.90752456, 0.9197304, 0.9311753, 0.94182765, 0.95167536, 0.96067486, 0.96878747, 0.97601191, 0.98233053, 0.98768615, 0.99208631, 0.99557391, 0.99806302, 0.99942968, 1.0] + y: [0.0091, 0.0092, 0.0095, 0.01019102, 0.01098722, 0.01199275, 0.01321968, 0.01466868, 0.01632499, 0.01818939, 0.02026184, 0.0225287, 0.02498942, 0.02765633, 0.03053579, 0.03361281, 0.03688185, 0.04032843, 0.04394211, 0.04771939, 0.05163426, 0.05568122, 0.0598265, 0.064066, 0.06838366, 0.07275679, 0.07716884, 0.08159288, 0.0859995, 0.09039339, 0.09473603, 0.09901837, 0.10322855, 0.10734222, 0.11135197, 0.11523528, 0.11897139, 0.12256454, 0.1259975, 0.12923028, 0.1322622, 0.13505874, 0.13762622, 0.13995045, 0.14202895, 0.14383082, 0.14537434, 0.14664124, 0.14762855, 0.14834512, 0.1487826, 0.14891816, 0.14878205, 0.14835062, 0.14763902, 0.14665631, 0.14540796, 0.14389445, 0.14211807, 0.14009933, 0.13784051, 0.13536035, 0.13267642, 0.12980554, 0.12676333, 0.12356534, 0.12022661, 0.11677002, 0.11319471, 0.10953142, 0.10578776, 0.1019807, 0.09812104, 0.09422341, 0.09031596, 0.08637472, 0.0824277, 0.07849466, 0.07455546, 0.07065466, 0.06678259, 0.06292689, 0.05912309, 0.05536396, 0.05161464, 0.0479351, 0.04434298, 0.04073649, 0.03723028, 0.03384709, 0.03041742, 0.02707923, 0.02385868, 0.02069172, 0.01762608, 0.01440222, 0.01148451, 0.0081594, 0.00393427, 0.0009904, 0.0, -0.00098225, -0.0038427, -0.00790888, -0.01119444, -0.01395867, -0.01702693, -0.01986336, -0.02277707, -0.02585365, -0.02902721, -0.03225419, -0.0354754, -0.03879837, -0.04222416, -0.0456621, -0.04918739, -0.05281184, -0.056457, -0.06018234, -0.06397734, -0.06781374, -0.07171229, -0.07567108, -0.07964775, -0.0836589, -0.08769058, -0.09172845, -0.09577523, -0.0998001, -0.10380363, -0.10776788, -0.11166856, -0.1155089, -0.11924991, -0.12288261, -0.12639744, -0.12975871, -0.13295904, -0.13598144, -0.13880129, -0.14139247, -0.14375103, -0.14585175, -0.14767899, -0.14921756, -0.15044292, -0.15133677, -0.15189867, -0.15207861, -0.15188281, -0.15127833, -0.15026529, -0.14880776, -0.14689814, -0.14451131, -0.14165209, -0.13829471, -0.13444104, -0.13009554, -0.12525581, -0.11992601, -0.11413531, -0.10791833, -0.10131971, -0.09437959, -0.08717996, -0.07979531, -0.0723041, -0.0648181, -0.05743322, -0.05023546, -0.04333091, -0.03680342, -0.03071971, -0.02512324, -0.02004647, -0.01555998, -0.01170028, -0.00840864, -0.00567019, -0.00346747, -0.00177337, -0.00057044, 0.00016442, 0.00045227, 0.00040686, 4.808e-05, -0.00057005, -0.00142772, -0.00241285, -0.00346998, -0.00454941, -0.00560222, -0.00657537, -0.00743116, -0.00814595, -0.00867599, -0.0089741, -0.0091] + relative_thickness: 0.301 + aerodynamic_center: 0.25 + description: FFA-W3-301 (Re=1.00e+07)FFA-W3 airfoil data for 10 MW sized rotor, computed using EllipSys2D v16.0, 70% free transition, 30% fully turbulent, 360 deg extrapolated using AirfoilPreppy, no 3D correction. F Zahle, DTU Wind Energy 11 May 2017 + polars: + - configuration: Default + re: 10000000.0 + c_l: + grid: *id007 + values: [0.0, 0.06508199999999967, 0.1301640000000001, 0.1952459999999998, 0.2603280000000001, 0.3254099999999999, 0.3904919999999995, 0.4555739999999999, 0.5206559999999996, 0.585738, 0.6508199999999997, 0.715902, 0.7809839999999998, 0.846066, 0.9111479999999997, 0.8425694639516688, 0.7818670055437373, 0.7244843098402394, 0.667547427011095, 0.609281551992159, 0.5486798966824511, 0.4853029569076038, 0.4191485137572729, 0.3505614104968701, 0.2801663191638286, 0.2088141134973738, 0.1375365290426018, 0.06750612865947059, 5.551115123125782e-17, -0.06750612865947038, -0.1375365290426018, -0.2088141134973736, -0.2801663191638284, -0.3505614104968701, -0.4191485137572727, -0.4853029569076038, -0.5486798966824509, -0.609281551992159, -0.6675474270110948, -0.7244843098402394, -0.7818670055437373, -0.8425694639516688, -0.9111480000000001, -1.103486, -1.107375, -1.118153, -1.123325, -1.118652, -1.1162, -1.095881, -0.917674, -0.69311, -0.453961, -0.177791, 0.1047965, 0.243828, 0.381107, 0.5166029999999999, 0.650441, 0.782666, 0.913264, 1.042074, 1.16873, 1.29296, 1.4139, 1.53088, 1.64208, 1.74568, 1.83887, 1.91764, 1.97413, 1.99916, 1.99377, 1.9172, 1.73683, 1.47321, 1.36017, 1.30164, 1.203670662788098, 1.116952865062482, 1.034977585486056, 0.9536391814444213, 0.8704022171316559, 0.7838284238320727, 0.693289938439434, 0.5987835910818179, 0.5008020149955287, 0.4002375988054692, 0.2983058764248194, 0.1964807557751455, 0.09643732665638627, 8.326672684688674e-17, -0.06750612865947038, -0.1375365290426018, -0.2088141134973736, -0.2801663191638284, -0.3505614104968701, -0.4191485137572725, -0.4853029569076038, -0.5486798966824507, -0.609281551992159, -0.667547427011095, -0.7244843098402394, -0.7818670055437373, -0.8425694639516688, -0.9111480000000001, -0.846066, -0.7809839999999998, -0.715902, -0.6508199999999997, -0.585738, -0.5206560000000002, -0.4555739999999999, -0.3904920000000002, -0.3254099999999999, -0.2603280000000001, -0.1952459999999998, -0.1301640000000001, -0.06508199999999967, 0.0] + c_d: + grid: *id007 + values: [0.02453989413077065, 0.02514126696655583, 0.02694148005423172, 0.0299288043911851, 0.03408378132946343, 0.0393793433196372, 0.05910284988155377, 0.08494939547754046, 0.114325143494607, 0.1470439970668735, 0.1828986924361337, 0.2216621162205011, 0.2630887488137909, 0.3069162247345773, 0.352867, 0.4406145937890228, 0.5325517261189517, 0.6267691333264902, 0.7213108445444507, 0.8142149582541823, 0.9035545382610917, 0.9874777756507463, 1.064246578628016, 1.132272784981496, 1.19015124156423, 1.236689060603091, 1.270930442477054, 1.292176547172617, 1.3, 1.292176547172617, 1.270930442477054, 1.236689060603091, 1.19015124156423, 1.132272784981496, 1.064246578628016, 0.9874777756507463, 0.903554538261092, 0.8142149582541823, 0.7213108445444512, 0.6267691333264902, 0.5325517261189519, 0.4406145937890226, 0.352867, 0.217209, 0.156289, 0.10335, 0.0818035, 0.06330720000000001, 0.0471828, 0.032802, 0.0235149, 0.017929, 0.0143063, 0.0124233, 0.01159539, 0.01143042, 0.01138052, 0.0114316, 0.0115641, 0.0117667, 0.0120419, 0.0123928, 0.0128344, 0.0133791, 0.0140591, 0.0148823, 0.0159193, 0.0172569, 0.0190791, 0.0216874, 0.0257196, 0.0322202, 0.0415688, 0.067308, 0.1052596, 0.192293, 0.274492, 0.352867, 0.4406145937890226, 0.5325517261189521, 0.6267691333264902, 0.7213108445444512, 0.8142149582541823, 0.903554538261092, 0.9874777756507463, 1.064246578628016, 1.132272784981496, 1.19015124156423, 1.236689060603091, 1.270930442477054, 1.292176547172617, 1.3, 1.292176547172617, 1.270930442477054, 1.236689060603091, 1.19015124156423, 1.132272784981496, 1.064246578628016, 0.9874777756507463, 0.9035545382610924, 0.8142149582541823, 0.7213108445444507, 0.6267691333264902, 0.5325517261189517, 0.4406145937890228, 0.352867, 0.3069162247345773, 0.2630887488137909, 0.2216621162205011, 0.1828986924361337, 0.1470439970668735, 0.1143251434946074, 0.08494939547754046, 0.05910284988155404, 0.0393793433196372, 0.03408378132946343, 0.0299288043911851, 0.02694148005423172, 0.02514126696655583, 0.02453989413077065] + c_m: + grid: *id007 + values: [0.0, 0.09142857142857111, 0.1828571428571434, 0.2742857142857145, 0.3657142857142855, 0.4008479484483313, 0.4022046659656612, 0.4035613834829912, 0.4049181010003212, 0.410104381457541, 0.4267793507344299, 0.4434543200113192, 0.4601292892882083, 0.4768042585650976, 0.4716193548383783, 0.4565615711452652, 0.4420245323683359, 0.4345175499598886, 0.4270105675514412, 0.4248258607787128, 0.4254423517089942, 0.426341502984693, 0.428129015345989, 0.4299165277072851, 0.4291631429094398, 0.4278804045367734, 0.4244392242984268, 0.4179402514170336, 0.4114412785356402, 0.3980388844999113, 0.3846364904641824, 0.3689207722089825, 0.3515721192106265, 0.333909388721252, 0.3147390862749883, 0.2955687838287246, 0.2765333377333091, 0.2575408004767999, 0.2387316755889837, 0.2202710342016843, 0.201810392814385, 0.1364412483721886, 0.0675974, 0.0423056, 0.02025520000000002, 0.00406595, 0.0001726999999999999, -0.00166925, -0.00119555, -0.004634049999999997, -0.02493615, -0.04303885, -0.0586752, -0.0760125, -0.0912123, -0.0976331, -0.1034111, -0.1086068, -0.113328, -0.117621, -0.121539, -0.125103, -0.128279, -0.131041, -0.133322, -0.135032, -0.135991, -0.136052, -0.135138, -0.133217, -0.1302, -0.126409, -0.122652, -0.116751, -0.116518, -0.1379, -0.162419, -0.184634, -0.2089385047751449, -0.2327633156993916, -0.2501122596365111, -0.2674612035736305, -0.2836521401300903, -0.2992335991177817, -0.3147151510781997, -0.3298827095243295, -0.3450502679704591, -0.3594241755410271, -0.3736327391791864, -0.3870155054073988, -0.3992283919715195, -0.4114412785356402, -0.4179402514170336, -0.4244392242984268, -0.4278804045367734, -0.4291631429094398, -0.4299165277072851, -0.428129015345989, -0.426341502984693, -0.4254423517089942, -0.4248258607787128, -0.4270105675514412, -0.4345175499598886, -0.4420245323683359, -0.4565615711452652, -0.4716193548383783, -0.4768042585650976, -0.4601292892882083, -0.4434543200113192, -0.4267793507344299, -0.410104381457541, -0.4220609581431781, -0.4435613834829912, -0.465061808822804, -0.4865622341626171, -0.457142857142857, -0.3428571428571431, -0.2285714285714291, -0.1142857142857139, 0.0] + - name: FFA-W3-330blend + coordinates: + x: [1.0, 0.9917, 0.98339, 0.97509, 0.96678, 0.95847, 0.95016, 0.94186, 0.93356, 0.92526, 0.91697, 0.90869, 0.90042, 0.89215, 0.88388, 0.87562, 0.86736, 0.85911, 0.85086, 0.84261, 0.83437, 0.82613, 0.81789, 0.80966, 0.80143, 0.7932, 0.78497, 0.77674, 0.76852, 0.76029, 0.75207, 0.74385, 0.73562, 0.7274, 0.71918, 0.71096, 0.70273, 0.69451, 0.68629, 0.67806, 0.66983, 0.66161, 0.65338, 0.64514, 0.63691, 0.62867, 0.62044, 0.61219, 0.60395, 0.5957, 0.58745, 0.5792, 0.57094, 0.56268, 0.55441, 0.54614, 0.53787, 0.52959, 0.5213, 0.51301, 0.50471, 0.49641, 0.48813, 0.47986, 0.47159, 0.4633, 0.45501, 0.44671, 0.4384, 0.43008, 0.42176, 0.41342, 0.40507, 0.39672, 0.38835, 0.37998, 0.37159, 0.3632, 0.35479, 0.34638, 0.33796, 0.32953, 0.32109, 0.31264, 0.30418, 0.29572, 0.28725, 0.27878, 0.2703, 0.26182, 0.25334, 0.24486, 0.23638, 0.2279, 0.21943, 0.21097, 0.20253, 0.1941, 0.1857, 0.17733, 0.16898, 0.16068, 0.15243, 0.14423, 0.1361, 0.12803, 0.12004, 0.11215, 0.10436, 0.09669, 0.08915, 0.08176, 0.07453, 0.06748, 0.06064, 0.05402, 0.04763, 0.04151, 0.03567, 0.03015, 0.02498, 0.02018, 0.01577, 0.01178, 0.0083, 0.00551, 0.0034, 0.00177, 0.00052, 0.0, 0.00048, 0.00174, 0.00344, 0.00581, 0.00892, 0.01269, 0.01696, 0.02165, 0.02674, 0.03223, 0.03808, 0.04424, 0.05068, 0.05737, 0.06428, 0.07139, 0.07869, 0.08616, 0.09378, 0.10153, 0.1094, 0.11738, 0.12545, 0.13361, 0.14184, 0.15013, 0.15849, 0.16691, 0.17537, 0.18388, 0.19242, 0.20099, 0.2096, 0.21822, 0.22687, 0.23554, 0.24423, 0.25292, 0.26162, 0.27033, 0.27905, 0.28776, 0.29648, 0.30519, 0.31389, 0.32259, 0.33128, 0.33996, 0.34863, 0.35728, 0.36592, 0.37455, 0.38315, 0.39174, 0.40031, 0.40885, 0.41738, 0.42588, 0.43435, 0.44281, 0.45123, 0.45963, 0.46801, 0.47636, 0.48469, 0.493, 0.50128, 0.50954, 0.51777, 0.52599, 0.53418, 0.54235, 0.5505, 0.55863, 0.56675, 0.57484, 0.58293, 0.591, 0.59905, 0.6071, 0.61517, 0.62324, 0.63131, 0.63937, 0.64743, 0.65549, 0.66356, 0.67163, 0.67971, 0.6878, 0.6959, 0.70402, 0.71216, 0.72031, 0.72849, 0.73669, 0.74491, 0.75315, 0.76143, 0.76973, 0.77805, 0.78641, 0.7948, 0.80321, 0.81165, 0.82012, 0.82861, 0.83712, 0.84566, 0.85422, 0.8628, 0.87141, 0.88003, 0.88866, 0.89733, 0.90601, 0.91468, 0.92334, 0.93199, 0.94063, 0.94925, 0.95784, 0.96639, 0.97489, 0.98332, 0.99168, 1.0] + y: [0.01245, 0.0146, 0.01675, 0.01888, 0.021, 0.0231, 0.0252, 0.0273, 0.0294, 0.03151, 0.03364, 0.03578, 0.03793, 0.04009, 0.04226, 0.04443, 0.0466, 0.04878, 0.05097, 0.05315, 0.05535, 0.05754, 0.05973, 0.06193, 0.06412, 0.0663, 0.06849, 0.07067, 0.07285, 0.07503, 0.0772, 0.07937, 0.08153, 0.08369, 0.08584, 0.08798, 0.09011, 0.09223, 0.09434, 0.09644, 0.09853, 0.10062, 0.10268, 0.10474, 0.10678, 0.10881, 0.11083, 0.11283, 0.11481, 0.11678, 0.11874, 0.12067, 0.12259, 0.12449, 0.12636, 0.12822, 0.13005, 0.13187, 0.13365, 0.13542, 0.13715, 0.13886, 0.14053, 0.14218, 0.14378, 0.14536, 0.14689, 0.14838, 0.14984, 0.15124, 0.1526, 0.15392, 0.15518, 0.15639, 0.15755, 0.15865, 0.15969, 0.16067, 0.16158, 0.16242, 0.16319, 0.16389, 0.16451, 0.16504, 0.16549, 0.16586, 0.16613, 0.1663, 0.16636, 0.16632, 0.16615, 0.16587, 0.16546, 0.16491, 0.16423, 0.1634, 0.1624, 0.16125, 0.15991, 0.15839, 0.15668, 0.15478, 0.15266, 0.15033, 0.14779, 0.14502, 0.14203, 0.1388, 0.13531, 0.13157, 0.12757, 0.12331, 0.11877, 0.11395, 0.10886, 0.10348, 0.09783, 0.09189, 0.08568, 0.07919, 0.07242, 0.06539, 0.0581, 0.05056, 0.04277, 0.03473, 0.02648, 0.01806, 0.00955, 0.00098, -0.00761, -0.01613, -0.02443, -0.03254, -0.04061, -0.0484, -0.05589, -0.0631, -0.07004, -0.07669, -0.08304, -0.0891, -0.09487, -0.10036, -0.10559, -0.11054, -0.11522, -0.11964, -0.1238, -0.12771, -0.13138, -0.13483, -0.13805, -0.14107, -0.14388, -0.14648, -0.14889, -0.15111, -0.15313, -0.15498, -0.15666, -0.15816, -0.1595, -0.16068, -0.16169, -0.16255, -0.16325, -0.16381, -0.16421, -0.16447, -0.16458, -0.16456, -0.1644, -0.1641, -0.16368, -0.16312, -0.16244, -0.16164, -0.16071, -0.15967, -0.15851, -0.15723, -0.15585, -0.15435, -0.15274, -0.15103, -0.14921, -0.14729, -0.14527, -0.14316, -0.14094, -0.13864, -0.13625, -0.13378, -0.13123, -0.12861, -0.12592, -0.12316, -0.12034, -0.11746, -0.11452, -0.11153, -0.10849, -0.1054, -0.10226, -0.09909, -0.09589, -0.09265, -0.08939, -0.08611, -0.08281, -0.0795, -0.07618, -0.07286, -0.06955, -0.06624, -0.06295, -0.05968, -0.05644, -0.05323, -0.05005, -0.04693, -0.04386, -0.04085, -0.0379, -0.03502, -0.03221, -0.02949, -0.02685, -0.02431, -0.02187, -0.01954, -0.01733, -0.01523, -0.01325, -0.01138, -0.00965, -0.00805, -0.00658, -0.00526, -0.0041, -0.0031, -0.00227, -0.00161, -0.00114, -0.00084, -0.00073, -0.00081, -0.00107, -0.00152, -0.00216, -0.00302, -0.00415, -0.00559, -0.00734, -0.00939, -0.01163] + relative_thickness: 0.33 + aerodynamic_center: 0.25 + description: FFA-W3-301 (Re=1.00e+07)FFA-W3 airfoil data for 10 MW sized rotor, computed using EllipSys2D v16.0, 70% free transition, 30% fully turbulent, 360 deg extrapolated using AirfoilPreppy, no 3D correction. F Zahle, DTU Wind Energy 11 May 2017 + polars: + - configuration: Default + re: 10000000.0 + c_l: + grid: *id007 + values: [0.0, 0.06960149999999965, 0.1392030000000001, 0.2088044999999997, 0.2784060000000002, 0.3480074999999999, 0.4176089999999995, 0.4872104999999998, 0.5568119999999995, 0.6264135, 0.6960149999999997, 0.7656165, 0.8352179999999998, 0.9048195000000001, 0.9744209999999996, 0.8941183973804908, 0.8238242323892865, 0.7584487054483077, 0.694771700400014, 0.6307857502445491, 0.5653233786594135, 0.4978317825846658, 0.4282276639730173, 0.3567973260845799, 0.2841230983261536, 0.2110254796034336, 0.1385149580974572, 0.06775009005483451, 5.551115123125782e-17, -0.06775009005483429, -0.1385149580974572, -0.2110254796034334, -0.2841230983261534, -0.3567973260845799, -0.4282276639730171, -0.4978317825846658, -0.5653233786594133, -0.6307857502445491, -0.6947717004000136, -0.7584487054483077, -0.8238242323892863, -0.8941183973804909, -0.974421, -1.163075, -1.14892, -1.094505, -1.058015, -1.022809, -0.9981, -0.9851519999999999, -0.8958320000000001, -0.675386, -0.432471, -0.15881, 0.1345552, 0.280145, 0.423864, 0.565193, 0.704102, 0.840706, 0.9750019999999999, 1.1068, 1.23603, 1.36223, 1.48424, 1.60097, 1.7101, 1.80957, 1.89473, 1.95698, 1.98576, 1.9926, 1.99617, 1.96398, 1.81179, 1.56073, 1.46798, 1.39203, 1.277311996257844, 1.176891760556123, 1.08349815064044, 0.992531000571448, 0.9011225003493559, 0.8076048266563048, 0.7111882608352368, 0.6117538056757384, 0.5097104658351143, 0.4058901404659335, 0.3014649708620477, 0.1978785115677961, 0.09678584293547757, 8.326672684688674e-17, -0.06775009005483429, -0.1385149580974572, -0.2110254796034334, -0.2841230983261534, -0.3567973260845799, -0.4282276639730169, -0.4978317825846658, -0.5653233786594131, -0.6307857502445491, -0.694771700400014, -0.7584487054483077, -0.8238242323892865, -0.8941183973804908, -0.9744210000000001, -0.9048195000000001, -0.8352179999999998, -0.7656165, -0.6960149999999997, -0.6264135, -0.5568120000000003, -0.4872104999999998, -0.4176090000000002, -0.3480074999999999, -0.2784060000000002, -0.2088044999999997, -0.1392030000000001, -0.06960149999999965, 0.0] + c_d: + grid: *id007 + values: [0.03168571521941585, 0.03228140266288518, 0.03406456851341789, 0.0370235109307087, 0.04113881642980572, 0.04638348058883583, 0.05732035840915397, 0.08318567098401346, 0.1125829925233925, 0.1453261918323379, 0.1812079664122574, 0.2200011597912121, 0.2614602049918655, 0.305322684955921, 0.351311, 0.4391329017052526, 0.5311520852033039, 0.6254588580353811, 0.7200967823138212, 0.8131034537151256, 0.9025514000831145, 0.9865882461859409, 1.063475306514778, 1.131623800850965, 1.189627936976401, 1.236294170322686, 1.270666030181773, 1.292043994668456, 1.3, 1.292043994668456, 1.270666030181773, 1.236294170322686, 1.189627936976401, 1.131623800850965, 1.063475306514778, 0.9865882461859409, 0.9025514000831149, 0.8131034537151256, 0.7200967823138217, 0.6254588580353811, 0.5311520852033041, 0.4391329017052525, 0.351311, 0.206482, 0.150009, 0.1059962, 0.0873187, 0.0705096, 0.0547408, 0.040516, 0.0292903, 0.0220672, 0.0173521, 0.0147274, 0.0136237, 0.0133913, 0.0132988, 0.0133253, 0.0134498, 0.0136649, 0.0139703, 0.0143689, 0.0148623, 0.0154718, 0.016227, 0.0171756, 0.0184081, 0.0200962, 0.0225804, 0.0267093, 0.0338017, 0.0433308, 0.0535441, 0.0770596, 0.1116943, 0.191027, 0.271993, 0.351311, 0.4391329017052525, 0.5311520852033044, 0.6254588580353811, 0.7200967823138217, 0.8131034537151256, 0.9025514000831149, 0.9865882461859409, 1.063475306514779, 1.131623800850965, 1.189627936976401, 1.236294170322686, 1.270666030181773, 1.292043994668456, 1.3, 1.292043994668456, 1.270666030181773, 1.236294170322686, 1.189627936976401, 1.131623800850965, 1.063475306514779, 0.9865882461859409, 0.9025514000831153, 0.8131034537151256, 0.7200967823138212, 0.6254588580353811, 0.5311520852033039, 0.4391329017052526, 0.351311, 0.305322684955921, 0.2614602049918655, 0.2200011597912121, 0.1812079664122574, 0.1453261918323379, 0.1125829925233929, 0.08318567098401346, 0.05732035840915425, 0.04638348058883583, 0.04113881642980572, 0.0370235109307087, 0.03406456851341789, 0.03228140266288518, 0.03168571521941585] + c_m: + grid: *id007 + values: [0.0, 0.09142857142857111, 0.1828571428571434, 0.2742857142857145, 0.3657142857142855, 0.4030821424574265, 0.4080135703893089, 0.4129449983211914, 0.4178764262530736, 0.4258631889251984, 0.4430159558180491, 0.4601687227109004, 0.4773214896037513, 0.4944742564966026, 0.4874268393378757, 0.4683872766528996, 0.4499633576163694, 0.4398506278338583, 0.4297378980513473, 0.4258929905516545, 0.425346936885024, 0.4252813661659265, 0.4267258847105035, 0.4281704032550807, 0.4274502570093805, 0.4262791389323726, 0.4230280176733544, 0.4168302252398217, 0.4106324328062891, 0.3975198115445945, 0.3844071902829, 0.3690545818236761, 0.352120805930902, 0.3349050700922636, 0.3163359265134768, 0.2977667829346901, 0.2794656421081109, 0.2612497748845071, 0.2432235332181071, 0.2255575801103945, 0.2078916270026819, 0.1373055674439705, 0.0627995, 0.0390491, 0.01853040000000002, 0.00440755, -0.00060625, -0.0034157, -0.004014449999999999, -0.002720500000000002, -0.0119793, -0.0345781, -0.05465579999999999, -0.0742549, -0.0926969, -0.1007386, -0.1080164, -0.114496, -0.12028, -0.125458, -0.130108, -0.134252, -0.137926, -0.14108, -0.143626, -0.145449, -0.146355, -0.146348, -0.145444, -0.143779, -0.141846, -0.140038, -0.138226, -0.133505, -0.131348, -0.1466, -0.172424, -0.194168, -0.2179194639550666, -0.2411497346779242, -0.2573438967659587, -0.2735380588539932, -0.2886164715857071, -0.3031076478140942, -0.3175696519048828, -0.3319399721346473, -0.3463102923644117, -0.3601353362640616, -0.3738467809282708, -0.3868127372299756, -0.3987225850181323, -0.4106324328062891, -0.4168302252398217, -0.4230280176733544, -0.4262791389323726, -0.4274502570093805, -0.4281704032550807, -0.4267258847105035, -0.4252813661659265, -0.4253469368850241, -0.4258929905516545, -0.4297378980513473, -0.4398506278338583, -0.4499633576163694, -0.4683872766528996, -0.4874268393378757, -0.4944742564966026, -0.4773214896037513, -0.4601687227109004, -0.4430159558180491, -0.4258631889251983, -0.4350192833959307, -0.4529449983211913, -0.4708707132464517, -0.4887964281717123, -0.457142857142857, -0.3428571428571431, -0.2285714285714291, -0.1142857142857139, 0.0] + - name: FFA-W3-360 + coordinates: + x: [1.0, 0.99944304, 0.99812049, 0.99569352, 0.99230484, 0.98802844, 0.98281508, 0.97666422, 0.96964069, 0.96174313, 0.95297315, 0.94338928, 0.93301284, 0.92185147, 0.90995468, 0.89736121, 0.88408503, 0.8701629, 0.85565276, 0.84057695, 0.82497463, 0.80889455, 0.79236237, 0.77542101, 0.75812546, 0.7405018, 0.72259209, 0.70444539, 0.68608843, 0.66757021, 0.64892678, 0.63018643, 0.61140138, 0.59259673, 0.57380843, 0.5550757, 0.53641763, 0.51787958, 0.49948103, 0.48125155, 0.46322225, 0.44540666, 0.42784323, 0.41053864, 0.39352525, 0.37681123, 0.36041977, 0.34436494, 0.32865846, 0.31331898, 0.29834798, 0.2837658, 0.26956679, 0.25577362, 0.2423778, 0.22939648, 0.21681735, 0.20465763, 0.19290757, 0.18157496, 0.17065819, 0.16014896, 0.15005511, 0.14035465, 0.1310675, 0.12216148, 0.11365876, 0.10553619, 0.09779065, 0.09042902, 0.08341621, 0.07677403, 0.0704692, 0.06450016, 0.05888182, 0.05356799, 0.04857581, 0.04389793, 0.03949498, 0.03539484, 0.03157626, 0.02800644, 0.02471592, 0.02168071, 0.01886319, 0.01629514, 0.0139662, 0.01181764, 0.00988361, 0.00818368, 0.00663128, 0.00524853, 0.00408271, 0.00308998, 0.00219098, 0.00145967, 0.00096333, 0.00059878, 0.00028988, 7.804e-05, 0.0, 7.807e-05, 0.00029009, 0.00059937, 0.00096448, 0.00146264, 0.00219661, 0.00309879, 0.00409516, 0.00526774, 0.00665839, 0.00821941, 0.00993095, 0.01187982, 0.01404463, 0.01639219, 0.01898469, 0.02182867, 0.02489252, 0.02822001, 0.03182924, 0.03568998, 0.03984236, 0.04430035, 0.04903788, 0.05410025, 0.05948747, 0.06518787, 0.07124791, 0.07764648, 0.08439704, 0.0915234, 0.09900711, 0.10688721, 0.11514762, 0.12380644, 0.13287211, 0.14233176, 0.1522146, 0.16249918, 0.17321393, 0.18434125, 0.19590296, 0.20788328, 0.22029378, 0.23312344, 0.24637487, 0.26004146, 0.27412439, 0.28861129, 0.30349962, 0.3187741, 0.33443448, 0.35045732, 0.36684322, 0.38356093, 0.40060975, 0.41795607, 0.4355933, 0.4534925, 0.47163211, 0.48999236, 0.50853595, 0.52724867, 0.5460886, 0.5650309, 0.58404504, 0.603088, 0.62213765, 0.64114752, 0.66008031, 0.67890619, 0.69757164, 0.71604492, 0.73429135, 0.75225234, 0.76989792, 0.78719153, 0.80407383, 0.82051349, 0.83646946, 0.85189026, 0.86674791, 0.8810097, 0.89461041, 0.90752456, 0.9197304, 0.9311753, 0.94182765, 0.95167536, 0.96067486, 0.96878747, 0.97601191, 0.98233053, 0.98768615, 0.99208631, 0.99557391, 0.99806302, 0.99942968, 1.0] + y: [0.01298, 0.01325853, 0.01353706, 0.01425486, 0.01525428, 0.01651103, 0.01803672, 0.01982832, 0.02186386, 0.02414104, 0.02665721, 0.02939433, 0.03232052, 0.03546139, 0.03882788, 0.04241907, 0.04621907, 0.0502115, 0.05437484, 0.05871183, 0.06320372, 0.06783179, 0.07258367, 0.0774446, 0.08239019, 0.0874051, 0.09248713, 0.09759082, 0.10272181, 0.10784802, 0.11295158, 0.11803077, 0.12305212, 0.12798755, 0.13283094, 0.13755364, 0.14213236, 0.14655625, 0.15079572, 0.154834, 0.15864807, 0.16221448, 0.16552639, 0.16856113, 0.17131655, 0.17376419, 0.17590809, 0.17773697, 0.17926124, 0.1804571, 0.18132691, 0.18187835, 0.18211123, 0.18203856, 0.1816423, 0.18093968, 0.17992886, 0.17862311, 0.17701528, 0.17511379, 0.17293277, 0.17048889, 0.16779353, 0.16485463, 0.16169458, 0.15833173, 0.15478881, 0.15107876, 0.14720829, 0.1431886, 0.13900782, 0.13472385, 0.13032428, 0.12581676, 0.12122098, 0.1165324, 0.11179119, 0.1070022, 0.10214717, 0.09729272, 0.09242295, 0.08751215, 0.082622, 0.07774621, 0.07282291, 0.06792968, 0.06314469, 0.05839354, 0.05371176, 0.04930104, 0.04462295, 0.03955245, 0.03423391, 0.02812695, 0.02159887, 0.01655986, 0.01252495, 0.0086197, 0.00433033, 0.00116483, 0, -0.00122141, -0.00493025, -0.01006582, -0.01404194, -0.01818461, -0.02325986, -0.02895118, -0.03402694, -0.0386738, -0.04323037, -0.04768713, -0.05194808, -0.05640002, -0.06095587, -0.06550064, -0.07015335, -0.07483557, -0.07944017, -0.08403249, -0.08861876, -0.0931531, -0.09767683, -0.10219736, -0.1066798, -0.1111375, -0.11555036, -0.11988963, -0.12416757, -0.12835267, -0.13244594, -0.13644393, -0.14032619, -0.14410659, -0.14776228, -0.15130027, -0.15469824, -0.15792918, -0.16099444, -0.1638649, -0.16652604, -0.16898536, -0.1712123, -0.17318495, -0.17488931, -0.17629521, -0.1773821, -0.17812893, -0.17850404, -0.17851925, -0.17811179, -0.17729404, -0.17604386, -0.17433908, -0.17216093, -0.1694972, -0.1663269, -0.16263694, -0.15840197, -0.15361785, -0.14832974, -0.14256755, -0.13636209, -0.12973893, -0.12273428, -0.11537409, -0.10772338, -0.09984354, -0.09178588, -0.08364761, -0.07551824, -0.06749519, -0.05967989, -0.05219166, -0.04509834, -0.03849862, -0.03246027, -0.02700348, -0.02213341, -0.01786296, -0.01419831, -0.0111631, -0.00876892, -0.00697163, -0.00574853, -0.0050322, -0.00479161, -0.004, -0.0037, -0.0034, -0.0031, -0.0028, -0.0025, -0.0022, -0.0019, -0.0016, -0.0013, -0.001, -0.001, -0.001] + relative_thickness: 0.36 + aerodynamic_center: 0.25 + description: FFA-W3-360 (Re=1.00e+07)FFA-W3 airfoil data for 10 MW sized rotor, computed using EllipSys2D v16.0, 70% free transition, 30% fully turbulent, 360 deg extrapolated using AirfoilPreppy, no 3D correction. F Zahle, DTU Wind Energy 11 May 2017 + polars: + - configuration: Default + re: 10000000.0 + c_l: + grid: *id007 + values: [0.0, 0.07178149999999964, 0.1435630000000001, 0.2153444999999997, 0.2871260000000001, 0.3589074999999998, 0.4306889999999995, 0.5024704999999998, 0.5742519999999995, 0.6460334999999998, 0.7178149999999996, 0.7895965, 0.8613779999999996, 0.9331595000000001, 1.004941, 0.9189832441278815, 0.8440624787712528, 0.7748315757714827, 0.7079034441742906, 0.6411583915080097, 0.5733514328047344, 0.5038751148063706, 0.432607030599928, 0.3598052464255929, 0.2860316675426308, 0.2120921414269119, 0.1389869075032731, 0.06786776586894963, 5.551115123125782e-17, -0.06786776586894941, -0.1389869075032731, -0.2120921414269117, -0.2860316675426306, -0.3598052464255929, -0.4326070305999278, -0.5038751148063706, -0.5733514328047343, -0.6411583915080097, -0.7079034441742903, -0.7748315757714827, -0.8440624787712528, -0.9189832441278818, -1.004941, -1.113059, -1.054248, -0.982473, -0.9417260000000001, -0.893331, -0.8547150000000001, -0.82348, -0.795409, -0.636498, -0.390949, -0.1307082, 0.1617258, 0.311214, 0.459562, 0.605659, 0.748677, 0.888617, 1.025442, 1.15878, 1.28822, 1.41282, 1.5309, 1.64065, 1.73926, 1.81971, 1.87065, 1.89221, 1.8791, 1.88111, 1.86359, 1.73324, 1.59357, 1.46708, 1.44834, 1.43563, 1.312833205896974, 1.20580354110179, 1.106902251102118, 1.011290634534701, 0.9159405592971568, 0.8190734754353348, 0.7198215925805296, 0.6180100437141822, 0.5140074948937041, 0.4086166679180437, 0.3029887734670167, 0.1985527250046759, 0.09695395124135632, 8.326672684688674e-17, -0.06786776586894941, -0.1389869075032731, -0.2120921414269117, -0.2860316675426306, -0.3598052464255929, -0.4326070305999276, -0.5038751148063706, -0.5733514328047341, -0.6411583915080097, -0.7079034441742906, -0.7748315757714827, -0.8440624787712528, -0.9189832441278815, -1.004941, -0.9331595000000001, -0.8613779999999996, -0.7895965, -0.7178149999999996, -0.6460334999999998, -0.5742520000000002, -0.5024704999999998, -0.4306890000000002, -0.3589074999999998, -0.2871260000000001, -0.2153444999999997, -0.1435630000000001, -0.07178149999999964, 0.0] + c_d: + grid: *id007 + values: [0.03714766955647932, 0.03773901133374287, 0.03950914701885524, 0.04244639553319605, 0.04653137791244361, 0.05173713798667876, 0.06067799498087878, 0.08650795664630631, 0.1158646406574733, 0.1485619804842812, 0.1843927466024767, 0.2231298637078226, 0.2645278540548881, 0.3083243977394954, 0.354242, 0.4419239296599637, 0.5337885553342574, 0.6279269922758957, 0.7223836823125198, 0.8151971682421021, 0.9044409874864893, 0.9882638315724093, 1.064928133355331, 1.132846276742087, 1.190613673317614, 1.237038015703063, 1.271164097300969, 1.29229368065155, 1.3, 1.29229368065155, 1.271164097300969, 1.237038015703063, 1.190613673317614, 1.132846276742087, 1.064928133355331, 0.9882638315724093, 0.9044409874864896, 0.8151971682421021, 0.7223836823125203, 0.6279269922758957, 0.5337885553342576, 0.4419239296599635, 0.354242, 0.204936, 0.154343, 0.1096723, 0.09248859999999999, 0.07597419999999999, 0.0605412, 0.0464115, 0.0344101, 0.0254821, 0.0199403, 0.0165337, 0.0150697, 0.0147703, 0.0146486, 0.0146633, 0.0148131, 0.0150716, 0.0154399, 0.0159264, 0.0165411, 0.0173108, 0.0183096, 0.0196309, 0.0214988, 0.0244544, 0.0296621, 0.0376996, 0.0482436, 0.0583757, 0.0699237, 0.1016591, 0.139159, 0.210024, 0.282003, 0.354242, 0.4419239296599635, 0.5337885553342578, 0.6279269922758957, 0.7223836823125203, 0.8151971682421021, 0.9044409874864896, 0.9882638315724093, 1.064928133355331, 1.132846276742087, 1.190613673317614, 1.237038015703063, 1.271164097300969, 1.29229368065155, 1.3, 1.29229368065155, 1.271164097300969, 1.237038015703063, 1.190613673317614, 1.132846276742087, 1.064928133355331, 0.9882638315724093, 0.9044409874864899, 0.8151971682421021, 0.7223836823125198, 0.6279269922758957, 0.5337885553342574, 0.4419239296599637, 0.354242, 0.3083243977394954, 0.2645278540548881, 0.2231298637078226, 0.1843927466024767, 0.1485619804842812, 0.1158646406574736, 0.08650795664630631, 0.06067799498087906, 0.05173713798667876, 0.04653137791244361, 0.04244639553319605, 0.03950914701885524, 0.03773901133374287, 0.03714766955647932] + c_m: + grid: *id007 + values: [0.0, 0.09142857142857111, 0.1828571428571434, 0.2742857142857145, 0.3657142857142855, 0.4031304636095545, 0.4081392053848416, 0.4131479471601289, 0.418156688935416, 0.4262712900595553, 0.4437034692302504, 0.461135648400946, 0.4785678275716412, 0.4960000067423368, 0.4883022318330648, 0.4678431517000181, 0.4480322988503198, 0.4369725143258274, 0.4259127298013352, 0.421499653933276, 0.4205848457791291, 0.4202386282975503, 0.4216794100726142, 0.4231201918476781, 0.4225819015145725, 0.4216313044922648, 0.4186442496773847, 0.4127722129896937, 0.4069001763020025, 0.3942614888768985, 0.3816228014517944, 0.3667605953544247, 0.3503288466648674, 0.3336237480028024, 0.3156065694727009, 0.2975893909425995, 0.2798918070549701, 0.2622959123717636, 0.2449149435317124, 0.2279423337936562, 0.2109697240555999, 0.1352478121095765, 0.0551741, 0.0321142, 0.01267890000000002, -0.002821250000000001, -0.0074129, -0.0110695, -0.01250065, -0.01177275, -0.01082065, -0.0276937, -0.05106789999999999, -0.0714813, -0.0917883, -0.1011907, -0.1098835, -0.1177635, -0.124769, -0.130977, -0.136484, -0.141299, -0.1454, -0.14875, -0.151175, -0.15262, -0.153103, -0.152545, -0.151206, -0.149693, -0.145621, -0.143578, -0.140948, -0.137106, -0.140821, -0.156927, -0.179786, -0.201472, -0.2240866097136903, -0.2461860684392151, -0.2613309888245065, -0.2764759092097978, -0.2906206368276409, -0.3042389471994587, -0.3178704108777556, -0.3315432135192723, -0.3452160161607889, -0.3584572127501313, -0.3716084914119372, -0.3840462584573971, -0.3954732173796998, -0.4069001763020025, -0.4127722129896937, -0.4186442496773847, -0.4216313044922648, -0.4225819015145725, -0.4231201918476781, -0.4216794100726143, -0.4202386282975503, -0.4205848457791291, -0.421499653933276, -0.4259127298013352, -0.4369725143258274, -0.4480322988503198, -0.4678431517000181, -0.4883022318330649, -0.4960000067423369, -0.4785678275716413, -0.461135648400946, -0.4437034692302504, -0.4262712900595553, -0.4352995460782729, -0.4531479471601288, -0.4709963482419844, -0.4888447493238403, -0.457142857142857, -0.3428571428571431, -0.2285714285714291, -0.1142857142857139, 0.0] +materials: + - name: Gelcoat + orth: 0 + rho: 1235.0 + E: 3.440e+009 + G: 1.323e+009 + nu: 0.300 + alpha: 0.0 + Xt: 74.e+06 + Xc: 87.e+06 + S: 2.126E+7 + GIc: 303 + GIIc: 3446 + alp0: 53 + ply_t: 5.0E-4 + waste: 0.25 + unit_cost: 7.23 + component_id: 0 + - name: steel + description: Steel of the tower and monopile ASTM A572 Grade 50 + source: http://www.matweb.com/search/DataSheet.aspx?MatGUID=9ced5dc901c54bd1aef19403d0385d7f + orth: 0 + rho: 7800 + alpha: 0.0 + E: 200.e+009 + nu: 0.3 + G: 79.3e+009 + GIc: 0 #Place holder, currently not used + GIIc: 0 #Place holder, currently not used + alp0: 0 #Place holder, currently not used + Xt: 450.e+006 + Xc: 450.e+006 + S: 0 + Xy: 345.e+6 + m: 3 + A: 3.5534648443719767e10 #DOI 10.1016/j.proeng.2013.12.061 eqn 5 + unit_cost: 0.7 + - name: steel_drive + description: Steel of the drivetrain ASTM 4140 40Cr1Mo28 + source: http://www.matweb.com/search/DataSheet.aspx?MatGUID=38108bfd64c44b4c9c6a02af78d5b6c6 + orth: 0 + rho: 7850 + alpha: 0.0 + E: 205.e+009 + nu: 0.3 + G: 80.0e+009 + GIc: 0 #Place holder, currently not used + GIIc: 0 #Place holder, currently not used + alp0: 0 #Place holder, currently not used + Xt: 814.e+006 + Xc: 814.e+006 + S: 0 + Xy: 485.e+6 + m: 3 + A: 3.5534648443719767e10 #DOI 10.1016/j.proeng.2013.12.061 eqn 5 + unit_cost: 0.9 + - name: cast_iron + description: Cast iron for hub and nacelle components + source: TODO + orth: 0 + rho: 7200 + alpha: 0.0 + E: 118.e+009 + nu: 0.3 + G: 47.6e+009 + GIc: 0 #Place holder, currently not used + GIIc: 0 #Place holder, currently not used + alp0: 0 #Place holder, currently not used + Xt: 310.e+006 + Xc: 310.e+006 + S: 0 + Xy: 265.e+6 + m: 3 + unit_cost: 0.5 + - name: glass_uni + description: Vectorply E-LT-5500, Epikote MGS RIMR 135/Epicure MGS RIMH 1366 epoxy + source: MSU composites database 3D property tests, Engineering Mechanics of Composite Materials, Daniel, I & Ishai, O., 1994, pg. 34 + orth: 1 + rho: 1940.0 + E: [4.46E+10, 1.7E+10, 1.67E+10] + G: [3.27E+9, 3.48E+9, 3.5E+9] + nu: [0.262, 0.35, 0.264] + Xt: [6.092E+8, 3.81E+7, 1.529E+7] + Xc: [4.7471E+8, 1.1264E+8, 1.1322E+8] + S: [1.891E+7, 1.724E+7, 1.316E+7] + m: 10 + GIc: 303 + GIIc: 3446 + alp0: 53 + fvf: 0.57 + fwf: 0.7450682696347697 + ply_t: 0.005 + unit_cost: 1.87 + waste: 0.05 + fiber_density: 2535.5 + area_density_dry: 7.227162215457267 + component_id: 5 + - name: CarbonUD + E: [114500000000.0, 8390000000.0, 8390000000.0] + G: [5990000000.0, 5990000000.0, 5990000000.0] + rho: 1220.0 + orth: 1 + nu: [0.27, 0.27, 0.27] + Xt: [1546.e+6, 0.0, 0.0] + Xc: [1047.e+6, 0.0, 0.0] + S: [0.0, 0.0, 0.0] + m: 16.1 + GIc: 0.0 + GIIc: 0.0 + alp0: 0.0 + fvf: 0.1076923076923077 #0.5384615384615385 + fwf: 0.15889029003783103 #0.6461538461538463 + ply_t: 0.005158730158730159 #0.0010317460317460314 + unit_cost: 30. + waste: 0.05 + fiber_density: 1800. + area_density_dry: 1.000 + component_id: 4 + - name: glass_biax + description: Vectorply E-LT-5500, Epikote MGS RIMR 135/Epicure MGS RIMH 1366 epoxy + source: MSU composites database 3D property tests, Engineering Mechanics of Composite Materials, Daniel, I & Ishai, O., 1994, pg. 34 + orth: 1 + rho: 1940.0 + E: [1.11E+10, 1.11E+10, 1.67E+10] + G: [1.353E+10, 3.49E+9, 3.49E+9] + nu: [0.5, 0.0, 0.066] + Xt: [4.29E+7, 4.26E+7, 1.53E+7] + Xc: [7.07E+7, 7.07E+7, 1.132E+8] + S: [1.034E+8, 1.72E+7, 1.32E+7] + m: 10 + GIc: 303 + GIIc: 3446 + alp0: 53 + fvf: 0.57 + fwf: 0.7450682696347697 + ply_t: 0.001 + waste: 0.15 + unit_cost: 3.00 + fiber_density: 2535.5 + area_density_dry: 1.4454324430914534 + component_id: 3 + roll_mass: 181.4368 + - name: glass_triax + description: Vectorply E-LT-5500, Epikote MGS RIMR 135/Epicure MGS RIMH 1366 epoxy + source: MSU composites database 3D property tests, Engineering Mechanics of Composite Materials, Daniel, I & Ishai, O., 1994, pg. 34 + orth: 1 + rho: 1940.0 + E: [2.87E+10, 1.66E+10, 1.67E+10] + G: [8.4E+9, 3.49E+9, 3.49E+9] + nu: [0.5, 0.0, 0.17] + Xt: [3.96E+8, 7.64E+7, 1.53E+7] + Xc: [4.489E+8, 1.747E+8, 1.132E+8] + S: [1.034E+8, 1.72E+7, 1.32E+7] + m: 10 + GIc: 303 + GIIc: 3446 + alp0: 53 + fvf: 0.57 + fwf: 0.7450682696347697 + ply_t: 0.001 + unit_cost: 2.86 + waste: 0.15 + fiber_density: 2535.5 + area_density_dry: 1.4454324430914534 + component_id: 2 + roll_mass: 181.4368 + - name: medium_density_foam + description: Airex C70.130 PVC Foam, source 'https://www.3accorematerials.com/uploads/documents/TDS-AIREX-C70-E_1106.pdf' + orth: 0 + rho: 130.0 + E: 1.292E+8 + G: 4.8946969696969695E+7 + nu: 0.32 + Xt: 2083000.0 + Xc: 1563000.0 + S: 1250000.0 + GIc: 303 + GIIc: 3446 + alp0: 53 + component_id: 1 + waste: 0.2 + unit_cost: 13 + - name: resin + description: epoxy + E: 1.e+6 + nu: 0.3 #Place holder, currently not used + G: 312500.0 #Place holder, currently not used + GIc: 0 #Place holder, currently not used + GIIc: 0 #Place holder, currently not used + alp0: 0 #Place holder, currently not used + Xt: 0 #Place holder, currently not used + Xc: 0 #Place holder, currently not used + S: 0 #Place holder, currently not used + rho: 1150. + alpha: 0.0 + orth: 0 + unit_cost: 3.63 + - name: adhesive + description: Sample adhesive + source: https://www.nrel.gov/docs/fy19osti/73585.pdf + orth: 0 + rho: 1100 + E: 4.56e+006 + nu: 0.49 + alpha: 0.0 + Xt: 0.69e+006 + Xc: 0.4e+006 + S: 0.31e+006 + G: 1520000.0 + unit_cost: 9.0 + +control: + supervisory: + Vin: 3.0 + Vout: 25.0 + maxTS: 95. + pitch: + PC_zeta: 1.0 # Pitch controller desired damping ratio [-] + PC_omega: 0.2 # Pitch controller desired natural frequency [rad/s] + ps_percent: 0.8 # Percent peak shaving [%, <= 1 ], {default = 80%} + max_pitch: 1.57 # Maximum pitch angle [rad], {default = 90 degrees} + max_pitch_rate: 0.03490658503988659 # 2 deg/s + min_pitch: 0. # Minimum pitch angle [rad], {default = 0 degrees} + torque: + control_type: tsr_tracking + tsr: 9.0 + max_torque_rate: 1500000. + VS_minspd: 0.5235987755982988 # Minimum rotor speed [rad/s], {default = 0 rad/s} + VS_maxspd: 0.7916813487046278 # Minimum rotor speed [rad/s], {default = 0 rad/s} + VS_zeta: 1.0 # Torque controller desired damping ratio [-] + VS_omega: 0.2 # Torque controller desired natural frequency [rad/s] + setpoint_smooth: + ss_vsgain: 1 # Torque controller setpoint smoother gain bias percentage [%, <= 1 ], {default = 100%} + ss_pcgain: .001 # Pitch controller setpoint smoother gain bias percentage [%, <= 1 ], {default = 0.1%} + shutdown: + limit_type: gen_speed + limit_value: 2.0 +environment: + air_density: 1.225 + air_dyn_viscosity: 1.81e-5 + weib_shape_parameter: 2. + air_speed_sound: 340. + shear_exp: 0.12 + water_density: 1025.0 + water_dyn_viscosity: 1.3351e-3 + soil_shear_modulus: 140.e+6 + soil_poisson: 0.4 + water_depth: 30.0 + significant_wave_height: 4.52 + significant_wave_period: 9.45 +bos: + plant_turbine_spacing: 7 + plant_row_spacing: 7 + commissioning_pct: 0.01 + decommissioning_pct: 0.15 + distance_to_substation: 1.0 + distance_to_interconnection: 8.5 + interconnect_voltage: 130. + distance_to_site: 115. + distance_to_landfall: 50. + port_cost_per_month: 2.e+6 + site_auction_price: 100.e+6 + site_assessment_plan_cost: 1.e+6 + site_assessment_cost: 25.e+6 + construction_operations_plan_cost: 2.5e+6 + boem_review_cost: 0.0 + design_install_plan_cost: 2.5e+6 +costs: + wake_loss_factor: 0.15 + fixed_charge_rate: 0.056 + bos_per_kW: 4053. + opex_per_kW: 137. + turbine_number: 40 + labor_rate: 58.8 + painting_rate: 30.0 + blade_mass_cost_coeff: 14.6 + hub_mass_cost_coeff: 3.9 + pitch_system_mass_cost_coeff: 22.1 + spinner_mass_cost_coeff: 11.1 + lss_mass_cost_coeff: 11.9 + bearing_mass_cost_coeff: 4.5 + gearbox_mass_cost_coeff: 12.9 + hss_mass_cost_coeff: 6.8 + generator_mass_cost_coeff: 12.4 + bedplate_mass_cost_coeff: 2.9 + yaw_mass_cost_coeff: 8.3 + converter_mass_cost_coeff: 18.8 + transformer_mass_cost_coeff: 18.8 + hvac_mass_cost_coeff: 124.0 + cover_mass_cost_coeff: 5.7 + elec_connec_machine_rating_cost_coeff: 41.85 + platforms_mass_cost_coeff: 17.1 + tower_mass_cost_coeff: 2.9 + controls_machine_rating_cost_coeff: 21.15 + crane_cost: 12.e+3 diff --git a/src/utilities/scripts/windio.py b/src/utilities/scripts/windio.py index fbb0c8f5..fbe4b769 100644 --- a/src/utilities/scripts/windio.py +++ b/src/utilities/scripts/windio.py @@ -71,6 +71,9 @@ def modify_name(snake_str: str) -> str: return modified def modify_variable_name(snake_str: str) -> str: + # get it to lower case + snake_str = snake_str.lower() + # remove spaces modified = snake_str.replace(' ', '') @@ -130,9 +133,6 @@ def build_structs(s: Struct, struct_schema: Schema, definition_map: dict, struct i += 1 s.name = f"{s.name}_{i}" - # Add struct to map - struct_map[s.name] = s - # Loop through properties in object schema and create fields for field_name, field_schema in struct_schema.properties.items(): field = Field( @@ -148,6 +148,9 @@ def build_structs(s: Struct, struct_schema: Schema, definition_map: dict, struct # Add the field to the struct s.fields.append(field) + # Add struct to map + struct_map[s.name] = s + def get_ref(ref: str, definitions: Definitions, struct_map: dict[str, Struct]) -> tuple[str, Schema]: ref = ref.removeprefix("#/definitions/") @@ -159,6 +162,43 @@ def get_ref(ref: str, definitions: Definitions, struct_map: dict[str, Struct]) - return name, schema +def set_type(field: Field, schema: Schema, definition_map: dict, struct_map: dict[str, Struct]) -> None: + """ + Sets the type of a field based on the schema type + + Args: + field (Field): The field to set the type of + schema (Schema): The schema of the field + definition_map (dict): The definitions present in the schema + struct_map (dict[str, Struct]): The structs that have already been built based on the schema + + Returns: + None + """ + if schema.type == 'object': + field.type = field.name + s = Struct(field.name, schema.description) + build_structs(s, schema, definition_map, struct_map) + if s.name != field.type: + field.type = s.name + elif schema.type == 'string': + field.type = 'std::string' + elif schema.type == 'number': + field.type = 'double' + elif schema.type == 'integer': + field.type = 'int' + elif schema.type == 'boolean': + field.type = 'bool' + elif schema.type == 'array': + if not schema.items: + raise ValueError(f"{field.name}: array without item spec") + field.type = schema.items.type + build_type(field, schema.items, definition_map, struct_map) + field.type = f"std::vector<{field.type}>" + else: + raise ValueError(f"Unknown type '{schema.type} - {schema}'") + + def build_type(field: Field, schema: Schema, definition_map: dict, struct_map: dict[str, Struct]) -> None: """ Determines the type of a field based on the schema and builds the Struct/Class if necessary. @@ -188,34 +228,106 @@ def build_type(field: Field, schema: Schema, definition_map: dict, struct_map: d if not schema.type and schema.properties: schema.type = 'object' - # If the schema has multiple types, use the first one (for now) + # If the schema has multiple types, use std::variant to represent them if schema.one_of: - schema = schema.one_of[0] + field.type = "std::variant<" + for i, s in enumerate(schema.one_of): + field_dummy = Field("", "", "", "") + set_type(field_dummy, s, definition_map, struct_map) + field.type += field_dummy.type + if i < len(schema.one_of) - 1: + field.type += ", " + field.type += ">" + return - # Set the type based on the schema type - if schema.type == 'object': # If the field is an object, build a Struct for it - field.type = field.name - s = Struct(field.name, schema.description) - build_structs(s, schema, definition_map, struct_map) - # set the type to the name of the struct if there were any changes made to the name - if s.name != field.type: - field.type = s.name - elif schema.type == 'string': - field.type = 'std::string' - elif schema.type == 'number': - field.type = 'double' - elif schema.type == 'integer': - field.type = 'int' - elif schema.type == 'boolean': - field.type = 'bool' - elif schema.type == 'array': - if not schema.items: - raise ValueError(f"{field.name}: array without item spec") - field.type = schema.items.type - build_type(field, schema.items, definition_map, struct_map) - field.type = f"std::vector<{field.type}>" + # Set the type based on the schema type using the set_type function + set_type(field, schema, definition_map, struct_map) + + +def set_parse_function(field: Field) -> str: + """ + Sets the parse function for the field based on the type of the field + + Args: + field (Field): The field to set the parse function for + + Returns: + str: The parse function as a string + """ + if field.type == "double": + return f" {field.name_yaml} = node[\"{field.name_yaml}\"] ? node[\"{field.name_yaml}\"].as() : 0.;\n" + elif field.type == "int": + return f" {field.name_yaml} = node[\"{field.name_yaml}\"] ? node[\"{field.name_yaml}\"].as() : 0;\n" + elif field.type == "bool": + return f" {field.name_yaml} = node[\"{field.name_yaml}\"] ? node[\"{field.name_yaml}\"].as() : false;\n" + elif field.type == "std::string": + return f" {field.name_yaml} = node[\"{field.name_yaml}\"] ? node[\"{field.name_yaml}\"].as() : \"\";\n" + elif field.type.startswith("std::vector"): + # We need to handle the case where the field is an array of objects + if field.type.removeprefix("std::vector<").removesuffix(">") not in ["double", "int", "bool", "std::string"]: + # if the field type starts with std::vector and is not an object, we can parse it directly + if "std::vector" in field.type.removeprefix("std::vector<").removesuffix(">"): + parse_string = "" + parse_string += f" if (node[\"{field.name_yaml}\"]) {{\n" + parse_string += f" for (const auto& item : node[\"{field.name_yaml}\"]) {{\n" + parse_string += f" {field.name_yaml}.push_back(item.as<{field.type.removeprefix('std::vector<').removesuffix('>')}>());\n" + parse_string += f" }}\n" + parse_string += f" }}\n" + return parse_string + # Assume the field is an array of objects and we need to parse each object + parse_string = "" + parse_string += f" if (node[\"{field.name_yaml}\"]) {{\n" + parse_string += f" for (const auto& item : node[\"{field.name_yaml}\"]) {{\n" + parse_string += f" {field.type.removeprefix('std::vector<').removesuffix('>')} x;\n" + parse_string += f" x.parse(item);\n" + parse_string += f" {field.name_yaml}.push_back(x);\n" + parse_string += f" }}\n" + parse_string += f" }}\n" + return parse_string + else: + return f" {field.name_yaml} = node[\"{field.name_yaml}\"] ? node[\"{field.name_yaml}\"].as<{field.type}>() : {field.type}();\n" + # Assume everything else is an object else: - raise ValueError(f"Unknown type '{schema.type} - {schema}'") + return f" if (node[\"{field.name_yaml}\"]) {{\n {field.name_yaml}.parse(node[\"{field.name_yaml}\"]);\n }}\n" + + +def build_parse_function(s: Struct) -> str: + """ + Builds the parse function for the struct + + Args: + s (Struct): The struct to build the parse function for + + Returns: + str: The parse function as a string + """ + parse_function = f"void parse(const YAML::Node& node) {{\n" + for field in s.fields: + if field.type.startswith("std::variant"): + # TODO + # - We are assuming all std::variants depend on the "orth" field. This may not be the case. + # - Following is hardcoded for two types in the variant. Need to generalize for more types. + + # if field is either of [E, G, nu, alpha, Xt, Xc, Xy, S] then it depends on "orth" field + if field.name_yaml in ["E", "G", "nu", "alpha", "Xt", "Xc", "Xy", "S"]: + parse_function += f" if (!orth) {{\n" + for i, s in enumerate(field.type.removeprefix("std::variant<").removesuffix(">").split(", ")): + field_dummy = Field("", "", "", "") + field_dummy.type = s + field_dummy.name_yaml = f"{field.name_yaml}" + parse_function += set_parse_function(field_dummy) + if i < len(field.type.removeprefix("std::variant<").removesuffix(">").split(", ")) - 1: + parse_function += f" }}\n" + parse_function += f" else {{\n" + parse_function += " }\n" + # Field does not depend on "orth" field - parse as a double + else: + parse_function += f" {field.name_yaml} = node[\"{field.name_yaml}\"] ? node[\"{field.name_yaml}\"].as() : 0.;\n" + else: + parse_function += set_parse_function(field) + + parse_function += "}\n" + return parse_function def main(): @@ -236,7 +348,7 @@ def main(): struct_map = {} build_structs(Struct("Turbine"), root, root.definitions, struct_map) - struct_names = sorted(struct_map.keys()) + struct_names = struct_map.keys() # Write structs to file with open(args.output_file.name, 'w') as file: @@ -252,6 +364,10 @@ def main(): # Write fields for f in s.fields: file.write(f" {f.type} {f.name_yaml};{f' // {f.desc}' if f.desc else ''}\n") + + # Write the parse function + file.write(f"\n {build_parse_function(s)}\n") + file.write("};\n\n") if __name__ == "__main__": diff --git a/src/utilities/scripts/windio_mapped_structs.cpp b/src/utilities/scripts/windio_mapped_structs.cpp deleted file mode 100644 index 021571da..00000000 --- a/src/utilities/scripts/windio_mapped_structs.cpp +++ /dev/null @@ -1,1183 +0,0 @@ -#include -#include - -// A -struct A { - std::vector grid; - std::vector values; -}; - -// AirfoilPosition -struct AirfoilPosition { - std::vector grid; - std::vector labels; -}; - -// Airfoils -struct Airfoils { - std::string name; // Name of the airfoil - Coordinates coordinates; // Airfoil coordinates described from trailing edge (x=1) along the - // suction side (y>0) to leading edge (x=0) back to trailing edge (x=1) - // along the pressure side (y<0) - double relative_thickness; // Thickness of the airfoil expressed non-dimensional - double aerodynamic_center; // Non-dimensional chordwise coordinate of the aerodynamic center - std::vector polars; // Different sets of polars at varying conditions -}; - -// AnchorTypes -struct AnchorTypes { - std::string name; // Name of anchor to be referenced by anchor_id in Nodes section - std::string type; // Type of anchor for property lookup - double mass; // mass of the anchor - double cost; // cost of the anchor - double max_lateral_load; // Maximum lateral load (parallel to the sea floor) that the anchor can - // support - double max_vertical_load; // Maximum vertical load (perpendicular to the sea floor) that the - // anchor can support -}; - -// Assembly -struct Assembly { - std::string turbine_class; // IEC wind class of the wind turbine. The options are "I", "II", - // "III", and 'IV' - std::string turbulence_class; // IEC turbulence class of the wind turbine. The options are "A", - // "B", and "C" - std::string drivetrain; // String characterizing the drivetrain configuration - std::string rotor_orientation; // Orientation of the horizontal-axis rotor. The options are - // "Upwind" and "Downwind" - int number_of_blades; // Number of blades of the rotor - double rotor_diameter; // Diameter of the rotor, defined as two times the blade length plus the - // hub diameter - double hub_height; // Height of the hub center over the ground (land-based) or the mean sea - // level (offshore) - double rated_power; // Nameplate power of the turbine, i.e. the rated electrical output of the - // generator. - double lifetime; // Turbine design lifetime in years. -}; - -// AxialJoints -struct AxialJoints { - std::string name; // Unique name of joint - double grid; // Non-dimensional value along member axis -}; - -// Ballast -struct Ballast { - bool variable_flag; // If true, then this ballast is variable and adjusted by control system. If - // false, then considered permanent - std::string material; // material identifier - std::vector grid; - double volume; // Total volume of ballast (permanent ballast only) -}; - -// Thickness of the hollow elliptical bedplate used in direct drive configurations -struct BedplateWallThickness { - std::vector grid; - std::vector values; -}; - -// Blade -struct Blade { - OuterShapeBem outer_shape_bem; - ElasticPropertiesMb elastic_properties_mb; - InternalStructure2DFem internal_structure_2d_fem; -}; - -// Bos -struct Bos { - double plant_turbine_spacing; // Distance between turbines in the primary grid streamwise - // direction in rotor diameters - double plant_row_spacing; // Distance between turbine rows in the cross-wind direction in rotor - // diameters - double commissioning_pct; // Fraction of total BOS cost that is due to commissioning - double decommissioning_pct; // Fraction of total BOS cost that is due to decommissioning - double distance_to_substation; // Distance from centroid of plant to substation in km - double distance_to_interconnection; // Distance from substation to grid connection in km - double distance_to_landfall; // Distance from plant centroid to export cable landfall for - // offshore plants - double distance_to_site; // Distance from port to plant centroid for offshore plants - double interconnect_voltage; // Voltage of cabling to grid interconnection - double port_cost_per_month; // Monthly port rental fees - double site_auction_price; // Cost to secure site lease - double site_assessment_plan_cost; // Cost to do engineering plan for site assessment - double site_assessment_cost; // Cost to execute site assessment - double construction_operations_plan_cost; // Cost to do construction planning - double boem_review_cost; // Cost for additional review by U.S. Dept of Interior Bureau of Ocean - // Energy Management (BOEM) - double design_install_plan_cost; // Cost to do installation planning -}; - -// Bulkhead -struct Bulkhead { - std::string material; // material identifier - Thickness - thickness; // thickness of the bulkhead at non-dimensional locations of the member [0..1] -}; - -// CD -struct CD { - std::vector grid; - std::vector values; -}; - -// CL -struct CL { - std::vector grid; - std::vector values; -}; - -// CM -struct CM { - std::vector grid; - std::vector values; -}; - -// Chord -struct Chord { - std::vector grid; - std::vector values; -}; - -// Components -struct Components { - Blade blade; - Hub hub; - Nacelle nacelle; - Tower tower; - Monopile monopile; - Jacket jacket; - FloatingPlatform - floating_platform; // Ontology definition for floating platforms (substructures) suitable - // for use with the WEIS co-design analysis tool - Mooring mooring; // Ontology definition for mooring systems suitable for use with the WEIS - // co-design analysis tool -}; - -// Control -struct Control { - Supervisory supervisory; - Pitch_1 pitch; - Torque torque; -}; - -// Airfoil coordinates described from trailing edge (x=1) along the suction side (y>0) to leading -// edge (x=0) back to trailing edge (x=1) along the pressure side (y<0) -struct Coordinates { - std::vector x; - std::vector y; -}; - -// Costs -struct Costs { - double wake_loss_factor; // Factor to model losses in annual energy production in a wind farm - // compared to the annual energy production at the turbine level (wakes - // mostly). - double fixed_charge_rate; // Fixed charge rate to compute the levelized cost of energy. See this - // for inspiration https://www.nrel.gov/docs/fy20osti/74598.pdf - double bos_per_kW; // Balance of stations costs expressed in USD per kW. See this for - // inspiration https://www.nrel.gov/docs/fy20osti/74598.pdf - double opex_per_kW; // Operational expenditures expressed in USD per kW. See this for - // inspiration https://www.nrel.gov/docs/fy20osti/74598.pdf - int turbine_number; // Number of turbines in the park, used to compute levelized cost of energy. - // Often wind parks are assumed of 600 MW. See this for inspiration - // https://www.nrel.gov/docs/fy20osti/74598.pdf - double labor_rate; // Hourly loaded wage per worker including all benefits and overhead. This - // is currently only applied to steel, column structures. - double painting_rate; // Cost per unit area for finishing and surface treatments. This is - // currently only applied to steel, column structures. - double blade_mass_cost_coeff; // Regression-based blade cost/mass ratio - double hub_mass_cost_coeff; // Regression-based hub cost/mass ratio - double pitch_system_mass_cost_coeff; // Regression-based pitch system cost/mass ratio - double spinner_mass_cost_coeff; // Regression-based spinner cost/mass ratio - double lss_mass_cost_coeff; // Regression-based low speed shaft cost/mass ratio - double bearing_mass_cost_coeff; // Regression-based bearing cost/mass ratio - double gearbox_mass_cost_coeff; // Regression-based gearbox cost/mass ratio - double hss_mass_cost_coeff; // Regression-based high speed side cost/mass ratio - double generator_mass_cost_coeff; // Regression-based generator cost/mass ratio - double bedplate_mass_cost_coeff; // Regression-based bedplate cost/mass ratio - double yaw_mass_cost_coeff; // Regression-based yaw system cost/mass ratio - double converter_mass_cost_coeff; // Regression-based converter cost/mass ratio - double transformer_mass_cost_coeff; // Regression-based transformer cost/mass ratio - double hvac_mass_cost_coeff; // Regression-based HVAC system cost/mass ratio - double cover_mass_cost_coeff; // Regression-based nacelle cover cost/mass ratio - double elec_connec_machine_rating_cost_coeff; // Regression-based electrical plant connection - // cost/rating ratio - double platforms_mass_cost_coeff; // Regression-based nacelle platform cost/mass ratio - double tower_mass_cost_coeff; // Regression-based tower cost/mass ratio - double controls_machine_rating_cost_coeff; // Regression-based controller and sensor system - // cost/rating ratio - double crane_cost; // crane cost if present - double electricity_price; // Electricity price used to compute value in beyond lcoe metrics - double - reserve_margin_price; // Reserve margin price used to compute value in beyond lcoe metrics - double capacity_credit; // Capacity credit used to compute value in beyond lcoe metrics - double - benchmark_price; // Benchmark price used to nondimensionalize value in beyond lcoe metrics -}; - -// Geometrically exact beams with simplified properties -struct CpLambdaBeam { - ReferenceAxis reference_axis; - T11 T11; - T22 T22; - Ea EA; - E11 E11; - E22 E22; - Gj GJ; - XCe x_ce; - YCe y_ce; - Dm dm; - DeltaTheta delta_theta; - XSh x_sh; - YSh y_sh; - J1 J1; - J2 J2; - J3 J3; - XCg x_cg; - YCg y_cg; -}; - -// DeltaTheta -struct DeltaTheta { - std::vector grid; - std::vector values; -}; - -// Dm -struct Dm { - std::vector grid; - std::vector values; -}; - -// DragCoefficient -struct DragCoefficient { - std::vector grid; - std::vector values; -}; - -// Inputs to WISDEM specific drivetrain sizing tool, DrivetrainSE -struct Drivetrain { - double uptilt; // Tilt angle of the nacelle, always defined positive. - double distance_tt_hub; // Vertical distance between the tower top and the hub center. - double distance_hub_mb; // Distance from hub flange to first main bearing along shaft. - double distance_mb_mb; // Distance from first to second main bearing along shaft. - double overhang; // Horizontal distance between the tower axis and the rotor apex. - double generator_length; // Length of generator along the shaft - double generator_radius_user; // User input override of generator radius, only used when using - // simple generator scaling - double generator_mass_user; // User input override of generator mass, only used when using - // simple generator mass scaling - GeneratorRpmEfficiencyUser - generator_rpm_efficiency_user; // User input override of generator rpm-efficiency values, - // with rpm as grid input and eff as values input - double gear_ratio; // Gear ratio of the drivetrain. Set it to 1 for direct drive machines. - double gearbox_length_user; // User input override of gearbox length along shaft, only used when - // using gearbox_mass_user is > 0 - double gearbox_radius_user; // User input override of gearbox radius, only used when using - // gearbox_mass_user is > 0 - double gearbox_mass_user; // User input override of gearbox mass - double gearbox_efficiency; // Efficiency of the gearbox system. - double damping_ratio; // Damping ratio for the drivetrain system - std::vector lss_diameter; // Diameter of the low speed shaft at beginning - // (generator/gearbox) and end (hub) points - std::vector lss_wall_thickness; // Thickness of the low speed shaft at beginning - // (generator/gearbox) and end (hub) points - std::string lss_material; // Material name identifier - double hss_length; // Length of the high speed shaft - std::vector hss_diameter; // Diameter of the high speed shaft at beginning (generator) - // and end (generator) points - std::vector hss_wall_thickness; // Thickness of the high speed shaft at beginning - // (generator) and end (generator) points - std::string hss_material; // Material name identifier - std::vector nose_diameter; // Diameter of the nose/turret at beginning (bedplate) and - // end (main bearing) points - std::vector nose_wall_thickness; // Thickness of the nose/turret at beginning (bedplate) - // and end (main bearing) points - BedplateWallThickness bedplate_wall_thickness; // Thickness of the hollow elliptical bedplate - // used in direct drive configurations - double bedplate_flange_width; // Bedplate I-beam flange width used in geared configurations - double - bedplate_flange_thickness; // Bedplate I-beam flange thickness used in geared configurations - double bedplate_web_thickness; // Bedplate I-beam web thickness used in geared configurations - double brake_mass_user; // Override regular regression-based calculation of brake mass with this - // value - double hvac_mass_coefficient; // Regression-based scaling coefficient on machine rating to get - // HVAC system mass - double converter_mass_user; // Override regular regression-based calculation of converter mass - // with this value - double transformer_mass_user; // Override regular regression-based calculation of transformer - // mass with this value - std::string bedplate_material; // Material name identifier - std::string mb1Type; // Type of bearing for first main bearing - std::string mb2Type; // Type of bearing for second main bearing - bool uptower; // If power electronics are located uptower (True) or at tower base (False) - std::string gear_configuration; // 3-letter string of Es or Ps to denote epicyclic or parallel - // gear configuration - std::vector planet_numbers; // Number of planets for epicyclic stages (use 0 for parallel) -}; - -// E -struct E { - std::vector grid; - std::vector values; -}; - -// E11 -struct E11 { - std::vector grid; - std::vector values; -}; - -// E22 -struct E22 { - std::vector grid; - std::vector values; -}; - -// Ea -struct Ea { - std::vector grid; - std::vector values; -}; - -// ElasticPropertiesMb -struct ElasticPropertiesMb { - TimoschenkoHawc timoschenko_hawc; - CpLambdaBeam cp_lambda_beam; - SixXSix six_x_six; -}; - -// ElasticPropertiesMb_1 -struct ElasticPropertiesMb_1 { - double system_mass; // Mass of the hub system, which includes the hub, the spinner, the blade - // bearings, the pitch actuators, the cabling, .... - std::vector - system_inertia; // Inertia of the hub system, on the hub reference system, which has the x - // aligned with the rotor axis, and y and z perpendicular to it. - std::vector system_center_mass; // Center of mass of the hub system. Work in progress. -}; - -// non-dimensional location of the point along the non-dimensional arc length -struct EndNdArc { - std::vector grid; - std::vector values; - std::string fixed; // Name of the layer to lock the edge -}; - -// Environment -struct Environment { - double gravity; // Gravitational acceleration - double air_density; // Density of air. - double air_dyn_viscosity; // Dynamic viscosity of air. - double air_pressure; // Atmospheric pressure of air - double air_vapor_pressure; // Vapor pressure of fluid - double weib_shape_parameter; // Shape factor of the Weibull wind distribution. - double air_speed_sound; // Speed of sound in air. - double shear_exp; // Shear exponent of the atmospheric boundary layer. - double water_density; // Density of water. - double water_dyn_viscosity; // Dynamic viscosity of water. - double water_depth; // Water depth for offshore environment. - double soil_shear_modulus; // Shear modulus of the soil. - double soil_poisson; // Poisson ratio of the soil. - double V_mean; // Average inflow wind speed. If different than 0, this will overwrite the V mean - // of the IEC wind class -}; - -// orientation of the fibers -struct FiberOrientation { - std::vector grid; - std::vector values; -}; - -// Ontology definition for floating platforms (substructures) suitable for use with the WEIS -// co-design analysis tool -struct FloatingPlatform { - std::vector joints; - std::vector members; - std::vector rigid_bodies; - double transition_piece_mass; // Total mass of transition piece - double transition_piece_cost; // Total cost of transition piece -}; - -// G -struct G { - std::vector grid; - std::vector values; -}; - -// Generator -struct Generator { - double mass_coefficient; // When not doing a detailed generator design, use a simplified - // approach to generator scaling. This input allows for overriding of - // the regression-based scaling coefficient to obtain generator mass - std::string generator_type; - double B_r; // Words - double P_Fe0e; // Words - double P_Fe0h; // Words - double S_N; // Words - double S_Nmax; // Words - double alpha_p; // Words - double b_r_tau_r; // Words - double b_ro; // Words - double b_s_tau_s; // Words - double b_so; // Words - double cofi; // Words - double freq; // Words - double h_i; // Words - double h_sy0; // Words - double h_w; // Words - double k_fes; // Words - double k_fillr; // Words - double k_fills; // Words - double k_s; // Words - int m; // Words - double mu_0; // Permittivity of free space - double mu_r; // Words - double p; // Words - double phi; // Words - int q1; // Words - int q3; // Words - double ratio_mw2pp; // Words - double resist_Cu; // Resistivity of copper - double sigma; // Maximum allowable shear stress - double y_tau_p; // Words - double y_tau_pr; // Words - double I_0; // Words - double d_r; // Words - double h_m; // Words - double h_0; // Words - double h_s; // Words - double len_s; // Words - double n_r; // Words - double rad_ag; // Words - double t_wr; // Words - double n_s; // Words - double b_st; // Words - double d_s; // Words - double t_ws; // Words - double rho_Copper; // Copper density - double rho_Fe; // Structural steel density - double rho_Fes; // Electrical steel density - double rho_PM; // Permanent magnet density - double C_Cu; // Copper cost - double C_Fe; // Structural steel cost - double C_Fes; // Electrical steel cost - double C_PM; // Permanent magnet cost -}; - -// User input override of generator rpm-efficiency values, with rpm as grid input and eff as values -// input -struct GeneratorRpmEfficiencyUser { - std::vector grid; - std::vector values; -}; - -// Gj -struct Gj { - std::vector grid; - std::vector values; -}; - -// Hub -struct Hub { - OuterShapeBem_1 outer_shape_bem; - ElasticPropertiesMb_1 elastic_properties_mb; -}; - -// IX -struct IX { - std::vector grid; - std::vector values; -}; - -// IY -struct IY { - std::vector grid; - std::vector values; -}; - -// InternalStructure -struct InternalStructure { - double outfitting_factor; // Scaling factor for the member mass to account for auxiliary - // structures, such as elevator, ladders, cables, platforms, - // fasteners, etc - std::vector layers; // Material layer properties - RingStiffeners ring_stiffeners; - LongitudinalStiffeners longitudinal_stiffeners; - Bulkhead bulkhead; - std::vector ballast; // Different types of permanent and/or variable ballast -}; - -// InternalStructure2DFem -struct InternalStructure2DFem { - Root root; - ReferenceAxis reference_axis; - std::vector webs; // ... - std::vector layers; // ... - Joint joint; // This is a spanwise joint along the blade, usually adopted to ease transportation - // constraints. WISDEM currently supports a single joint. -}; - -// InternalStructure2DFem_1 -struct InternalStructure2DFem_1 { - double outfitting_factor; // Scaling factor for the tower mass to account for auxiliary - // structures, such as elevator, ladders, cables, platforms, etc - ReferenceAxis reference_axis; - std::vector layers; // ... -}; - -// InternalStructure2DFem_2 -struct InternalStructure2DFem_2 { - double outfitting_factor; // Scaling factor for the tower mass to account for auxiliary - // structures, such as elevator, ladders, cables, platforms, etc - ReferenceAxis reference_axis; - std::vector layers; // ... -}; - -// J1 -struct J1 { - std::vector grid; - std::vector values; -}; - -// J2 -struct J2 { - std::vector grid; - std::vector values; -}; - -// J3 -struct J3 { - std::vector grid; - std::vector values; -}; - -// Jacket -struct Jacket { - double transition_piece_mass; // Total mass of transition piece - double transition_piece_cost; // Total cost of transition piece - double gravity_foundation_mass; // Total mass of gravity foundation addition onto monopile - std::string material; // Material of jacket members - int n_bays; // Number of bays (x-joints) in the vertical direction for jackets. - int n_legs; // Number of legs for jacket. - double r_foot; // Radius of foot (bottom) of jacket, in meters. - double r_head; // Radius of head (top) of jacket, in meters. - double height; // Overall jacket height, meters. - double leg_thickness; // Leg thickness, meters. Constant throughout each leg. - std::vector brace_diameters; - std::vector brace_thicknesses; - std::vector bay_spacing; - std::vector leg_spacing; - bool x_mb; // Mud brace included if true. - double leg_diameter; // Leg diameter, meters. Constant throughout each leg. -}; - -// This is a spanwise joint along the blade, usually adopted to ease transportation constraints. -// WISDEM currently supports a single joint. -struct Joint { - double position; // Spanwise position of the segmentation joint. - double mass; // Mass of the joint. - double cost; // Cost of the joint. - std::string bolt; // Bolt size for the blade bolted joint - double nonmaterial_cost; // Cost of the joint not from materials. - std::string - reinforcement_layer_ss; // Layer identifier for the joint reinforcement on the suction side - std::string - reinforcement_layer_ps; // Layer identifier for the joint reinforcement on the pressure side -}; - -// Joints -struct Joints { - std::string name; // Unique name of the joint (node) - std::vector - location; // Coordinates (x,y,z or r,θ,z) of the joint in the global coordinate system. - bool transition; // Whether the transition piece and turbine tower attach at this node - bool cylindrical; // Whether to use cylindrical coordinates (r,θ,z), with (r,θ) lying in the - // x/y-plane, instead of Cartesian coordinates. - Reactions reactions; // If this joint is compliant is certain DOFs, then specify which are - // compliant (True) in the member/element coordinate system). If not - // specified, default is all entries are False (completely rigid). For - // instance, a ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True -}; - -// K -struct K { - std::vector grid; - std::vector values; -}; - -// KX -struct KX { - std::vector grid; - std::vector values; -}; - -// KY -struct KY { - std::vector grid; - std::vector values; -}; - -// LDividedByD -struct LDividedByD { - std::vector grid; - std::vector values; -}; - -// Layers -struct Layers { - std::string name; // structural component identifier - std::string material; // material identifier - std::string web; // web to which the layer is associated to, only to be defined for web layers - Thickness thickness; // thickness of the laminate - NPlies n_plies; // number of plies of the laminate - FiberOrientation fiber_orientation; // orientation of the fibers - Width width; // dimensional width of the component along the arc - MidpointNdArc midpoint_nd_arc; - StartNdArc start_nd_arc; - EndNdArc end_nd_arc; - Rotation rotation; - OffsetYPa offset_y_pa; -}; - -// Layers_1 -struct Layers_1 { - std::string name; // structural component identifier - std::string material; // material identifier - Thickness thickness; // Gridded values describing thickness along non-dimensional axis from - // joint1 to joint2 -}; - -// LineTypes -struct LineTypes { - std::string name; // Name of material or line type to be referenced by line segments - double diameter; // the volume-equivalent diameter of the line – the diameter of a cylinder - // having the same displacement per unit length - std::string type; // Type of material for property lookup - double mass_density; // mass per unit length (in air) - double - stiffness; // axial line stiffness, product of elasticity modulus and cross-sectional area - double cost; // cost per unit length - double breaking_load; // line break tension - double damping; // internal damping (BA) - double transverse_added_mass; // transverse added mass coefficient (with respect to line - // displacement) - double tangential_added_mass; // tangential added mass coefficient (with respect to line - // displacement) - double transverse_drag; // transverse drag coefficient (with respect to frontal area, d*l) - double tangential_drag; // tangential drag coefficient (with respect to surface area, π*d*l) -}; - -// Lines -struct Lines { - std::string name; // ID of this line - std::string line_type; // Reference to line type database - double unstretched_length; // length of line segment prior to tensioning - std::string node1; // node id of first line connection - std::string node2; // node id of second line connection -}; - -// LongitudinalStiffeners -struct LongitudinalStiffeners { - std::string material; // material identifier - double flange_thickness; - double flange_width; - double web_height; - double web_thickness; - double - spacing; // Spacing between stiffeners in angle (radians). Value of 0.0 means no stiffeners -}; - -// Materials -struct Materials { - std::string name; // Name of the material - std::string description; // Optional field describing the material - std::string source; // Optional field describing where the data come from - int orth; // Flag to switch between isotropic (0) and orthotropic (1) materials - double rho; // Density of the material. For composites, this is the density of the laminate once - // cured - double E; // Stiffness modulus. For orthotropic materials, it consists of an array with E11, E22 - // and E33. - double G; // Shear stiffness modulus. For orthotropic materials, it consists of an array with - // G12, G13 and G23 - double nu; // Poisson ratio. For orthotropic materials, it consists of an array with nu12, nu13 - // and nu23. For isotropic materials, a minimum of -1 and a maximum of 0.5 are - // imposed. No limits are imposed to anisotropic materials. - double alpha; // Thermal coefficient of expansion - double Xt; // Ultimate tensile strength. For orthotropic materials, it consists of an array with - // the strength in directions 11, 22 and 33. The values must be positive - double Xc; // Ultimate compressive strength. For orthotropic materials, it consists of an array - // with the strength in directions 11, 22 and 33. The values must be positive - double Xy; // Ultimate yield strength for metals. For orthotropic materials, it consists of an - // array with the strength in directions 12, 13 and 23 - double S; // Ultimate shear strength. For orthotropic materials, it consists of an array with - // the strength in directions 12, 13 and 23 - double ply_t; // Ply thickness of the composite material - double unit_cost; // Unit cost of the material. For composites, this is the unit cost of the dry - // fabric. - double fvf; // Fiber volume fraction of the composite material - double fwf; // Fiber weight fraction of the composite material - double fiber_density; // Density of the fibers of a composite material. - double area_density_dry; // Aerial density of a fabric of a composite material. - int component_id; // Flag used by the NREL blade cost model - // https://www.nrel.gov/docs/fy19osti/73585.pdf to define the manufacturing - // process behind the laminate. 0 - coating, 1 - sandwich filler , 2 - shell - // skin, 3 - shear webs, 4 - spar caps, 5 - TE reinf. - double waste; // Fraction of material that ends up wasted during manufacturing. This quantity is - // used in the NREL blade cost model https://www.nrel.gov/docs/fy19osti/73585.pdf - double roll_mass; // Mass of a fabric roll. This quantity is used in the NREL blade cost model - // https://www.nrel.gov/docs/fy19osti/73585.pdf - double GIc; // Mode 1 critical energy-release rate. It is used by NuMAD from Sandia National - // Laboratories - double GIIc; // Mode 2 critical energy-release rate. It is used by NuMAD from Sandia National - // Laboratories - double alp0; // Fracture angle under pure transverse compression. It is used by NuMAD from - // Sandia National Laboratories - double A; // Fatigue S/N curve fitting parameter S=A*N^(-1/m) - double m; // Fatigue S/N curve fitting parameter S=A*N^(-1/m) - double R; // Fatigue stress ratio -}; - -// Members -struct Members { - std::string name; // Name of the member - std::string joint1; // Name of joint/node connection - std::string joint2; // Name of joint/node connection - OuterShape_1 outer_shape; - InternalStructure internal_structure; - std::vector - axial_joints; // Define joints along non-dimensional axis of this member - double Ca; // User-defined added mass coefficient - double Cp; // User-defined pressure coefficient - double Cd; // User-defined drag coefficient -}; - -// non-dimensional location of the point along the non-dimensional arc length -struct MidpointNdArc { - std::vector grid; - std::vector values; - std::string fixed; // Name of the layer to lock the edge -}; - -// Monopile -struct Monopile { - double transition_piece_mass; // Total mass of transition piece - double transition_piece_cost; // Total cost of transition piece - double gravity_foundation_mass; // Total mass of gravity foundation addition onto monopile - OuterShape outer_shape; - ElasticPropertiesMb elastic_properties_mb; - InternalStructure2DFem_2 internal_structure_2d_fem; -}; - -// Ontology definition for mooring systems suitable for use with the WEIS co-design analysis tool -struct Mooring { - std::vector nodes; // List of nodes in the mooring system - std::vector lines; // List of all mooring line properties in the mooring system - std::vector line_types; // List of mooring line properties used in the system - std::vector anchor_types; // List of anchor properties used in the system -}; - -// number of plies of the laminate -struct NPlies { - std::vector grid; - std::vector values; -}; - -// Nacelle -struct Nacelle { - Drivetrain drivetrain; // Inputs to WISDEM specific drivetrain sizing tool, DrivetrainSE - Generator generator; -}; - -// Nodes -struct Nodes { - std::string name; // Name or ID of this node for use in line segment - std::string node_type; - std::vector - location; // – Coordinates x, y, and z of the connection (relative to inertial reference - // frame if Fixed or Connect, relative to platform reference frame if Vessel). In - // the case of Connect nodes, it is simply an initial guess for position before - // MoorDyn calculates the equilibrium initial position. - std::string joint; // For anchor positions and fairlead attachments, reference a joint name from - // the "joints" section or an "axial_joint" on a member - std::string anchor_type; // Name of anchor type from anchor_type list - std::string fairlead_type; - double node_mass; // Clump weight mass - double node_volume; // Floater volume - double drag_area; // Product of drag coefficient and projected area (assumed constant in all - // directions) to calculate a drag force for the node - double added_mass; // Added mass coefficient used along with node volume to calculate added mass - // on node -}; - -// dimensional offset in respect to the pitch axis along the x axis, which is the chord line rotated -// by a user-defined angle. Negative values move the midpoint towards the leading edge, positive -// towards the trailing edge -struct OffsetYPa { - std::vector grid; - std::vector values; -}; - -// OuterDiameter -struct OuterDiameter { - std::vector grid; - std::vector values; -}; - -// OuterShape -struct OuterShape { - ReferenceAxis reference_axis; - OuterDiameter outer_diameter; - DragCoefficient drag_coefficient; -}; - -// OuterShapeBem -struct OuterShapeBem { - AirfoilPosition airfoil_position; - Chord chord; - Twist twist; - PitchAxis pitch_axis; - TDividedByC t_divided_by_c; - LDividedByD L_divided_by_D; - CD c_d; - StallMargin stall_margin; - ReferenceAxis reference_axis; - Rthick rthick; -}; - -// OuterShapeBem_1 -struct OuterShapeBem_1 { - double diameter; // Diameter of the hub measured at the blade root positions. - double cone_angle; // Rotor precone angle, defined positive for both upwind and downwind rotors. - double drag_coefficient; // Equivalent drag coefficient to compute the aerodynamic forces - // generated on the hub. -}; - -// OuterShapeBem_2 -struct OuterShapeBem_2 { - ReferenceAxis reference_axis; - OuterDiameter outer_diameter; - DragCoefficient drag_coefficient; -}; - -// OuterShape_1 -struct OuterShape_1 { - std::string shape; // Specifies cross-sectional shape of the member. If circular, then the - // outer_diameter field is required. If polygonal, then the side_lengths, - // angles, and rotation fields are required - OuterDiameter outer_diameter; // Gridded values describing diameter at non-dimensional axis from - // joint1 to joint2 - std::vector side_lengths1; // Polygon side lengths at joint1 - std::vector side_lengths2; // Polygon side lengths at joint1 - std::vector angles; // Polygon angles with the ordering such that angle[i] is between - // side_length[i] and side_length[i+1] - double rotation; // Angle between principle axes of the cross-section and the member coordinate - // system. Essentially the rotation of the member if both joints were placed - // on the global x-y axis with the first side length along the z-axis -}; - -// Pitch -struct Pitch { - std::vector grid; - std::vector values; -}; - -// PitchAxis -struct PitchAxis { - std::vector grid; - std::vector values; -}; - -// Pitch_1 -struct Pitch_1 { - double min_pitch; // Minimum pitch angle, where the default is 0 degrees. It is used by the - // ROSCO controller (https://github.com/NREL/ROSCO) - double max_pitch_rate; // Maximum pitch rate of the rotor blades. -}; - -// Lift, drag and moment coefficients expressed in terms of angles of attack -struct Polars { - std::string configuration; // Text to identify the setup for the definition of the polars - double re; // Reynolds number of the polars - CL c_l; - CD c_d; - CM c_m; -}; - -// If this joint is compliant is certain DOFs, then specify which are compliant (True) in the -// member/element coordinate system). If not specified, default is all entries are False (completely -// rigid). For instance, a ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True -struct Reactions { - bool Rx; - bool Ry; - bool Rz; - bool Rxx; - bool Ryy; - bool Rzz; - std::vector Euler; // Euler angles [alpha, beta, gamma] that describe the rotation of - // the Reaction coordinate system relative to the global coordinate - // system α is a rotation around the z axis, β is a rotation around - // the x' axis, γ is a rotation around the z" axis. -}; - -// The reference system is located at blade root, with z aligned with the pitch axis, x pointing -// towards the suction sides of the airfoils (standard prebend will be negative) and y pointing to -// the trailing edge (standard sweep will be positive) -struct ReferenceAxis { - X x; - Y y; - Z z; -}; - -// RiX -struct RiX { - std::vector grid; - std::vector values; -}; - -// RiY -struct RiY { - std::vector grid; - std::vector values; -}; - -// RigidBodies -struct RigidBodies { - std::string joint1; // Name of joint/node connection - double mass; // Mass of this rigid body - double cost; // Cost of this rigid body - std::vector - cm_offset; // Offset from joint location to center of mass (CM) of body in dx, dy, dz - std::vector moments_of_inertia; // Moments of inertia around body CM in Ixx, Iyy, Izz - double Ca; // User-defined added mass coefficient - double Cp; // User-defined pressure coefficient - double Cd; // User-defined drag coefficient -}; - -// RingStiffeners -struct RingStiffeners { - std::string material; // material identifier - double flange_thickness; - double flange_width; - double web_height; - double web_thickness; - double spacing; // Spacing between stiffeners in non-dimensional grid coordinates. Value of 0.0 - // means no stiffeners -}; - -// Root -struct Root { - double d_f; // Diameter of the fastener, default is M30, so 0.03 meters - double sigma_max; // Max stress on bolt -}; - -// rotation of the chord axis around the pitch axis -struct Rotation { - std::vector grid; - std::vector values; - std::string fixed; // Name of the layer to lock the edge -}; - -// Rthick -struct Rthick { - std::vector grid; - std::vector values; -}; - -// SixXSix -struct SixXSix { - ReferenceAxis reference_axis; - StiffMatrix stiff_matrix; -}; - -// StallMargin -struct StallMargin { - std::vector grid; - std::vector values; -}; - -// non-dimensional location of the point along the non-dimensional arc length -struct StartNdArc { - std::vector grid; - std::vector values; - std::string fixed; // Name of the layer to lock the edge -}; - -// StiffMatrix -struct StiffMatrix { - std::vector grid; - std::vector> values; -}; - -// Supervisory -struct Supervisory { - double Vin; // Cut-in wind speed of the wind turbine. - double Vout; // Cut-out wind speed of the wind turbine. - double maxTS; // Maximum allowable blade tip speed. -}; - -// T11 -struct T11 { - std::vector grid; - std::vector values; -}; - -// T22 -struct T22 { - std::vector grid; - std::vector values; -}; - -// TDividedByC -struct TDividedByC { - std::vector grid; - std::vector values; -}; - -// thickness of the laminate -struct Thickness { - std::vector grid; - std::vector values; -}; - -// Timoschenko beam as in HAWC2 -struct TimoschenkoHawc { - ReferenceAxis reference_axis; - A A; - E E; - G G; - IX I_x; - IY I_y; - K K; - Dm dm; - KX k_x; - KY k_y; - Pitch pitch; - RiX ri_x; - RiY ri_y; - XCg x_cg; - XE x_e; - XSh x_sh; - YCg y_cg; - YE y_e; - YSh y_sh; -}; - -// Torque -struct Torque { - double max_torque_rate; // Maximum torque rate of the wind turbine generator. - double tsr; // Rated tip speed ratio of the wind turbine. As default, it is maintained constant - // in region II. - double VS_minspd; // Minimum rotor speed. It is used by the ROSCO controller - // (https://github.com/NREL/ROSCO) - double VS_maxspd; // Maximum rotor speed. It is used by the ROSCO controller - // (https://github.com/NREL/ROSCO) -}; - -// Tower -struct Tower { - OuterShapeBem_2 outer_shape_bem; - ElasticPropertiesMb elastic_properties_mb; - InternalStructure2DFem_1 internal_structure_2d_fem; -}; - -// Turbine -struct Turbine { - std::string comments; // Description of the model - std::string name; // Name of the turbine - Assembly assembly; - Components components; - std::vector airfoils; // Database of airfoils - std::vector materials; // Database of the materials - Control control; - Environment environment; - Bos bos; - Costs costs; -}; - -// Twist -struct Twist { - std::vector grid; - std::vector values; -}; - -// Webs -struct Webs { - std::string name; // structural component identifier - StartNdArc start_nd_arc; - EndNdArc end_nd_arc; - Rotation rotation; - OffsetYPa offset_y_pa; -}; - -// dimensional width of the component along the arc -struct Width { - std::vector grid; - std::vector values; -}; - -// X -struct X { - std::vector grid; - std::vector values; -}; - -// XCe -struct XCe { - std::vector grid; - std::vector values; -}; - -// XCg -struct XCg { - std::vector grid; - std::vector values; -}; - -// XE -struct XE { - std::vector grid; - std::vector values; -}; - -// XSh -struct XSh { - std::vector grid; - std::vector values; -}; - -// Y -struct Y { - std::vector grid; - std::vector values; -}; - -// YCe -struct YCe { - std::vector grid; - std::vector values; -}; - -// YCg -struct YCg { - std::vector grid; - std::vector values; -}; - -// YE -struct YE { - std::vector grid; - std::vector values; -}; - -// YSh -struct YSh { - std::vector grid; - std::vector values; -}; - -// Z -struct Z { - std::vector grid; - std::vector values; -}; diff --git a/src/utilities/scripts/windio_mapped_structs.hpp b/src/utilities/scripts/windio_mapped_structs.hpp new file mode 100644 index 00000000..f8cb1816 --- /dev/null +++ b/src/utilities/scripts/windio_mapped_structs.hpp @@ -0,0 +1,2595 @@ +#include +#include + +// Assembly +struct Assembly { + std::string turbine_class; // IEC wind class of the wind turbine. The options are "I", "II", + // "III", and 'IV' + std::string turbulence_class; // IEC turbulence class of the wind turbine. The options are "A", + // "B", and "C" + std::string drivetrain; // String characterizing the drivetrain configuration + std::string rotor_orientation; // Orientation of the horizontal-axis rotor. The options are + // "Upwind" and "Downwind" + int number_of_blades; // Number of blades of the rotor + double rotor_diameter; // Diameter of the rotor, defined as two times the blade length plus the + // hub diameter + double hub_height; // Height of the hub center over the ground (land-based) or the mean sea + // level (offshore) + double rated_power; // Nameplate power of the turbine, i.e. the rated electrical output of the + // generator. + double lifetime; // Turbine design lifetime in years. + + void parse(const YAML::Node& node) { + turbine_class = node["turbine_class"] ? node["turbine_class"].as() : ""; + turbulence_class = + node["turbulence_class"] ? node["turbulence_class"].as() : ""; + drivetrain = node["drivetrain"] ? node["drivetrain"].as() : ""; + rotor_orientation = + node["rotor_orientation"] ? node["rotor_orientation"].as() : ""; + number_of_blades = node["number_of_blades"] ? node["number_of_blades"].as() : 0; + rotor_diameter = node["rotor_diameter"] ? node["rotor_diameter"].as() : 0.; + hub_height = node["hub_height"] ? node["hub_height"].as() : 0.; + rated_power = node["rated_power"] ? node["rated_power"].as() : 0.; + lifetime = node["lifetime"] ? node["lifetime"].as() : 0.; + } +}; + +// AirfoilPosition +struct AirfoilPosition { + std::vector grid; + std::vector labels; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + labels = node["labels"] ? node["labels"].as>() + : std::vector(); + } +}; + +// Chord +struct Chord { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Twist +struct Twist { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// PitchAxis +struct PitchAxis { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// TDividedByC +struct TDividedByC { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// LDividedByD +struct LDividedByD { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// CD +struct CD { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// StallMargin +struct StallMargin { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// X +struct X { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Y +struct Y { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Z +struct Z { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// The reference system is located at blade root, with z aligned with the pitch axis, x pointing +// towards the suction sides of the airfoils (standard prebend will be negative) and y pointing to +// the trailing edge (standard sweep will be positive) +struct ReferenceAxis { + X x; + Y y; + Z z; + + void parse(const YAML::Node& node) { + if (node["x"]) { + x.parse(node["x"]); + } + if (node["y"]) { + y.parse(node["y"]); + } + if (node["z"]) { + z.parse(node["z"]); + } + } +}; + +// Rthick +struct Rthick { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// OuterShapeBem +struct OuterShapeBem { + AirfoilPosition airfoil_position; + Chord chord; + Twist twist; + PitchAxis pitch_axis; + TDividedByC t_divided_by_c; + LDividedByD l_divided_by_d; + CD c_d; + StallMargin stall_margin; + ReferenceAxis reference_axis; + Rthick rthick; + + void parse(const YAML::Node& node) { + if (node["airfoil_position"]) { + airfoil_position.parse(node["airfoil_position"]); + } + if (node["chord"]) { + chord.parse(node["chord"]); + } + if (node["twist"]) { + twist.parse(node["twist"]); + } + if (node["pitch_axis"]) { + pitch_axis.parse(node["pitch_axis"]); + } + if (node["t_divided_by_c"]) { + t_divided_by_c.parse(node["t_divided_by_c"]); + } + if (node["l_divided_by_d"]) { + l_divided_by_d.parse(node["l_divided_by_d"]); + } + if (node["c_d"]) { + c_d.parse(node["c_d"]); + } + if (node["stall_margin"]) { + stall_margin.parse(node["stall_margin"]); + } + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["rthick"]) { + rthick.parse(node["rthick"]); + } + } +}; + +// A +struct A { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// E +struct E { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// G +struct G { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// IX +struct IX { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// IY +struct IY { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// K +struct K { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Dm +struct Dm { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// KX +struct KX { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// KY +struct KY { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Pitch +struct Pitch { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// RiX +struct RiX { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// RiY +struct RiY { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// XCg +struct XCg { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// XE +struct XE { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// XSh +struct XSh { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// YCg +struct YCg { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// YE +struct YE { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// YSh +struct YSh { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Timoschenko beam as in HAWC2 +struct TimoschenkoHawc { + ReferenceAxis reference_axis; + A a; + E e; + G g; + IX i_x; + IY i_y; + K k; + Dm dm; + KX k_x; + KY k_y; + Pitch pitch; + RiX ri_x; + RiY ri_y; + XCg x_cg; + XE x_e; + XSh x_sh; + YCg y_cg; + YE y_e; + YSh y_sh; + + void parse(const YAML::Node& node) { + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["a"]) { + a.parse(node["a"]); + } + if (node["e"]) { + e.parse(node["e"]); + } + if (node["g"]) { + g.parse(node["g"]); + } + if (node["i_x"]) { + i_x.parse(node["i_x"]); + } + if (node["i_y"]) { + i_y.parse(node["i_y"]); + } + if (node["k"]) { + k.parse(node["k"]); + } + if (node["dm"]) { + dm.parse(node["dm"]); + } + if (node["k_x"]) { + k_x.parse(node["k_x"]); + } + if (node["k_y"]) { + k_y.parse(node["k_y"]); + } + if (node["pitch"]) { + pitch.parse(node["pitch"]); + } + if (node["ri_x"]) { + ri_x.parse(node["ri_x"]); + } + if (node["ri_y"]) { + ri_y.parse(node["ri_y"]); + } + if (node["x_cg"]) { + x_cg.parse(node["x_cg"]); + } + if (node["x_e"]) { + x_e.parse(node["x_e"]); + } + if (node["x_sh"]) { + x_sh.parse(node["x_sh"]); + } + if (node["y_cg"]) { + y_cg.parse(node["y_cg"]); + } + if (node["y_e"]) { + y_e.parse(node["y_e"]); + } + if (node["y_sh"]) { + y_sh.parse(node["y_sh"]); + } + } +}; + +// T11 +struct T11 { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// T22 +struct T22 { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Ea +struct Ea { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// E11 +struct E11 { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// E22 +struct E22 { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Gj +struct Gj { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// XCe +struct XCe { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// YCe +struct YCe { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// DeltaTheta +struct DeltaTheta { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// J1 +struct J1 { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// J2 +struct J2 { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// J3 +struct J3 { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Geometrically exact beams with simplified properties +struct CpLambdaBeam { + ReferenceAxis reference_axis; + T11 t11; + T22 t22; + Ea ea; + E11 e11; + E22 e22; + Gj gj; + XCe x_ce; + YCe y_ce; + Dm dm; + DeltaTheta delta_theta; + XSh x_sh; + YSh y_sh; + J1 j1; + J2 j2; + J3 j3; + XCg x_cg; + YCg y_cg; + + void parse(const YAML::Node& node) { + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["t11"]) { + t11.parse(node["t11"]); + } + if (node["t22"]) { + t22.parse(node["t22"]); + } + if (node["ea"]) { + ea.parse(node["ea"]); + } + if (node["e11"]) { + e11.parse(node["e11"]); + } + if (node["e22"]) { + e22.parse(node["e22"]); + } + if (node["gj"]) { + gj.parse(node["gj"]); + } + if (node["x_ce"]) { + x_ce.parse(node["x_ce"]); + } + if (node["y_ce"]) { + y_ce.parse(node["y_ce"]); + } + if (node["dm"]) { + dm.parse(node["dm"]); + } + if (node["delta_theta"]) { + delta_theta.parse(node["delta_theta"]); + } + if (node["x_sh"]) { + x_sh.parse(node["x_sh"]); + } + if (node["y_sh"]) { + y_sh.parse(node["y_sh"]); + } + if (node["j1"]) { + j1.parse(node["j1"]); + } + if (node["j2"]) { + j2.parse(node["j2"]); + } + if (node["j3"]) { + j3.parse(node["j3"]); + } + if (node["x_cg"]) { + x_cg.parse(node["x_cg"]); + } + if (node["y_cg"]) { + y_cg.parse(node["y_cg"]); + } + } +}; + +// StiffMatrix +struct StiffMatrix { + std::vector grid; + std::vector> values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + if (node["values"]) { + std::transform( + node["values"].begin(), node["values"].end(), std::back_inserter(values), + [](const auto& item) { + // use 'template' keyword to treat 'as' as a dependent template name + return item.template as>(); + } + ); + } + } +}; + +// SixXSix +struct SixXSix { + ReferenceAxis reference_axis; + StiffMatrix stiff_matrix; + + void parse(const YAML::Node& node) { + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["stiff_matrix"]) { + stiff_matrix.parse(node["stiff_matrix"]); + } + } +}; + +// ElasticPropertiesMb +struct ElasticPropertiesMb { + TimoschenkoHawc timoschenko_hawc; + CpLambdaBeam cp_lambda_beam; + SixXSix six_x_six; + + void parse(const YAML::Node& node) { + if (node["timoschenko_hawc"]) { + timoschenko_hawc.parse(node["timoschenko_hawc"]); + } + if (node["cp_lambda_beam"]) { + cp_lambda_beam.parse(node["cp_lambda_beam"]); + } + if (node["six_x_six"]) { + six_x_six.parse(node["six_x_six"]); + } + } +}; + +// Root +struct Root { + double d_f; // Diameter of the fastener, default is M30, so 0.03 meters + double sigma_max; // Max stress on bolt + + void parse(const YAML::Node& node) { + d_f = node["d_f"] ? node["d_f"].as() : 0.; + sigma_max = node["sigma_max"] ? node["sigma_max"].as() : 0.; + } +}; + +// non-dimensional location of the point along the non-dimensional arc length +struct StartNdArc { + std::vector grid; + std::vector values; + std::string fixed; // Name of the layer to lock the edge + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + fixed = node["fixed"] ? node["fixed"].as() : ""; + } +}; + +// non-dimensional location of the point along the non-dimensional arc length +struct EndNdArc { + std::vector grid; + std::vector values; + std::string fixed; // Name of the layer to lock the edge + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + fixed = node["fixed"] ? node["fixed"].as() : ""; + } +}; + +// rotation of the chord axis around the pitch axis +struct Rotation { + std::vector grid; + std::vector values; + std::string fixed; // Name of the layer to lock the edge + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + fixed = node["fixed"] ? node["fixed"].as() : ""; + } +}; + +// dimensional offset in respect to the pitch axis along the x axis, which is the chord line rotated +// by a user-defined angle. Negative values move the midpoint towards the leading edge, positive +// towards the trailing edge +struct OffsetYPa { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Webs +struct Webs { + std::string name; // structural component identifier + StartNdArc start_nd_arc; + EndNdArc end_nd_arc; + Rotation rotation; + OffsetYPa offset_y_pa; + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + if (node["start_nd_arc"]) { + start_nd_arc.parse(node["start_nd_arc"]); + } + if (node["end_nd_arc"]) { + end_nd_arc.parse(node["end_nd_arc"]); + } + if (node["rotation"]) { + rotation.parse(node["rotation"]); + } + if (node["offset_y_pa"]) { + offset_y_pa.parse(node["offset_y_pa"]); + } + } +}; + +// thickness of the laminate +struct Thickness { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// number of plies of the laminate +struct NPlies { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// orientation of the fibers +struct FiberOrientation { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// dimensional width of the component along the arc +struct Width { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// non-dimensional location of the point along the non-dimensional arc length +struct MidpointNdArc { + std::vector grid; + std::vector values; + std::string fixed; // Name of the layer to lock the edge + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + fixed = node["fixed"] ? node["fixed"].as() : ""; + } +}; + +// Layers +struct Layers { + std::string name; // structural component identifier + std::string material; // material identifier + std::string web; // web to which the layer is associated to, only to be defined for web layers + Thickness thickness; // thickness of the laminate + NPlies n_plies; // number of plies of the laminate + FiberOrientation fiber_orientation; // orientation of the fibers + Width width; // dimensional width of the component along the arc + MidpointNdArc midpoint_nd_arc; + StartNdArc start_nd_arc; + EndNdArc end_nd_arc; + Rotation rotation; + OffsetYPa offset_y_pa; + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + material = node["material"] ? node["material"].as() : ""; + web = node["web"] ? node["web"].as() : ""; + if (node["thickness"]) { + thickness.parse(node["thickness"]); + } + if (node["n_plies"]) { + n_plies.parse(node["n_plies"]); + } + if (node["fiber_orientation"]) { + fiber_orientation.parse(node["fiber_orientation"]); + } + if (node["width"]) { + width.parse(node["width"]); + } + if (node["midpoint_nd_arc"]) { + midpoint_nd_arc.parse(node["midpoint_nd_arc"]); + } + if (node["start_nd_arc"]) { + start_nd_arc.parse(node["start_nd_arc"]); + } + if (node["end_nd_arc"]) { + end_nd_arc.parse(node["end_nd_arc"]); + } + if (node["rotation"]) { + rotation.parse(node["rotation"]); + } + if (node["offset_y_pa"]) { + offset_y_pa.parse(node["offset_y_pa"]); + } + } +}; + +// This is a spanwise joint along the blade, usually adopted to ease transportation constraints. +// WISDEM currently supports a single joint. +struct Joint { + double position; // Spanwise position of the segmentation joint. + double mass; // Mass of the joint. + double cost; // Cost of the joint. + std::string bolt; // Bolt size for the blade bolted joint + double nonmaterial_cost; // Cost of the joint not from materials. + std::string + reinforcement_layer_ss; // Layer identifier for the joint reinforcement on the suction side + std::string + reinforcement_layer_ps; // Layer identifier for the joint reinforcement on the pressure side + + void parse(const YAML::Node& node) { + position = node["position"] ? node["position"].as() : 0.; + mass = node["mass"] ? node["mass"].as() : 0.; + cost = node["cost"] ? node["cost"].as() : 0.; + bolt = node["bolt"] ? node["bolt"].as() : ""; + nonmaterial_cost = node["nonmaterial_cost"] ? node["nonmaterial_cost"].as() : 0.; + reinforcement_layer_ss = + node["reinforcement_layer_ss"] ? node["reinforcement_layer_ss"].as() : ""; + reinforcement_layer_ps = + node["reinforcement_layer_ps"] ? node["reinforcement_layer_ps"].as() : ""; + } +}; + +// InternalStructure2DFem +struct InternalStructure2DFem { + Root root; + ReferenceAxis reference_axis; + std::vector webs; // ... + std::vector layers; // ... + Joint joint; // This is a spanwise joint along the blade, usually adopted to ease transportation + // constraints. WISDEM currently supports a single joint. + + void parse(const YAML::Node& node) { + if (node["root"]) { + root.parse(node["root"]); + } + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["webs"]) { + for (const auto& item : node["webs"]) { + Webs x; + x.parse(item); + webs.push_back(x); + } + } + if (node["layers"]) { + for (const auto& item : node["layers"]) { + Layers x; + x.parse(item); + layers.push_back(x); + } + } + if (node["joint"]) { + joint.parse(node["joint"]); + } + } +}; + +// Blade +struct Blade { + OuterShapeBem outer_shape_bem; + ElasticPropertiesMb elastic_properties_mb; + InternalStructure2DFem internal_structure_2d_fem; + + void parse(const YAML::Node& node) { + if (node["outer_shape_bem"]) { + outer_shape_bem.parse(node["outer_shape_bem"]); + } + if (node["elastic_properties_mb"]) { + elastic_properties_mb.parse(node["elastic_properties_mb"]); + } + if (node["internal_structure_2d_fem"]) { + internal_structure_2d_fem.parse(node["internal_structure_2d_fem"]); + } + } +}; + +// OuterShapeBem_1 +struct OuterShapeBem_1 { + double diameter; // Diameter of the hub measured at the blade root positions. + double cone_angle; // Rotor precone angle, defined positive for both upwind and downwind rotors. + double drag_coefficient; // Equivalent drag coefficient to compute the aerodynamic forces + // generated on the hub. + + void parse(const YAML::Node& node) { + diameter = node["diameter"] ? node["diameter"].as() : 0.; + cone_angle = node["cone_angle"] ? node["cone_angle"].as() : 0.; + drag_coefficient = node["drag_coefficient"] ? node["drag_coefficient"].as() : 0.; + } +}; + +// ElasticPropertiesMb_1 +struct ElasticPropertiesMb_1 { + double system_mass; // Mass of the hub system, which includes the hub, the spinner, the blade + // bearings, the pitch actuators, the cabling, .... + std::vector + system_inertia; // Inertia of the hub system, on the hub reference system, which has the x + // aligned with the rotor axis, and y and z perpendicular to it. + std::vector system_center_mass; // Center of mass of the hub system. Work in progress. + + void parse(const YAML::Node& node) { + system_mass = node["system_mass"] ? node["system_mass"].as() : 0.; + system_inertia = node["system_inertia"] ? node["system_inertia"].as>() + : std::vector(); + system_center_mass = node["system_center_mass"] + ? node["system_center_mass"].as>() + : std::vector(); + } +}; + +// Hub +struct Hub { + OuterShapeBem_1 outer_shape_bem; + ElasticPropertiesMb_1 elastic_properties_mb; + + void parse(const YAML::Node& node) { + if (node["outer_shape_bem"]) { + outer_shape_bem.parse(node["outer_shape_bem"]); + } + if (node["elastic_properties_mb"]) { + elastic_properties_mb.parse(node["elastic_properties_mb"]); + } + } +}; + +// User input override of generator rpm-efficiency values, with rpm as grid input and eff as values +// input +struct GeneratorRpmEfficiencyUser { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Thickness of the hollow elliptical bedplate used in direct drive configurations +struct BedplateWallThickness { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Inputs to WISDEM specific drivetrain sizing tool, DrivetrainSE +struct Drivetrain { + double uptilt; // Tilt angle of the nacelle, always defined positive. + double distance_tt_hub; // Vertical distance between the tower top and the hub center. + double distance_hub_mb; // Distance from hub flange to first main bearing along shaft. + double distance_mb_mb; // Distance from first to second main bearing along shaft. + double overhang; // Horizontal distance between the tower axis and the rotor apex. + double generator_length; // Length of generator along the shaft + double generator_radius_user; // User input override of generator radius, only used when using + // simple generator scaling + double generator_mass_user; // User input override of generator mass, only used when using + // simple generator mass scaling + GeneratorRpmEfficiencyUser + generator_rpm_efficiency_user; // User input override of generator rpm-efficiency values, + // with rpm as grid input and eff as values input + double gear_ratio; // Gear ratio of the drivetrain. Set it to 1 for direct drive machines. + double gearbox_length_user; // User input override of gearbox length along shaft, only used when + // using gearbox_mass_user is > 0 + double gearbox_radius_user; // User input override of gearbox radius, only used when using + // gearbox_mass_user is > 0 + double gearbox_mass_user; // User input override of gearbox mass + double gearbox_efficiency; // Efficiency of the gearbox system. + double damping_ratio; // Damping ratio for the drivetrain system + std::vector lss_diameter; // Diameter of the low speed shaft at beginning + // (generator/gearbox) and end (hub) points + std::vector lss_wall_thickness; // Thickness of the low speed shaft at beginning + // (generator/gearbox) and end (hub) points + std::string lss_material; // Material name identifier + double hss_length; // Length of the high speed shaft + std::vector hss_diameter; // Diameter of the high speed shaft at beginning (generator) + // and end (generator) points + std::vector hss_wall_thickness; // Thickness of the high speed shaft at beginning + // (generator) and end (generator) points + std::string hss_material; // Material name identifier + std::vector nose_diameter; // Diameter of the nose/turret at beginning (bedplate) and + // end (main bearing) points + std::vector nose_wall_thickness; // Thickness of the nose/turret at beginning (bedplate) + // and end (main bearing) points + BedplateWallThickness bedplate_wall_thickness; // Thickness of the hollow elliptical bedplate + // used in direct drive configurations + double bedplate_flange_width; // Bedplate I-beam flange width used in geared configurations + double + bedplate_flange_thickness; // Bedplate I-beam flange thickness used in geared configurations + double bedplate_web_thickness; // Bedplate I-beam web thickness used in geared configurations + double brake_mass_user; // Override regular regression-based calculation of brake mass with this + // value + double hvac_mass_coefficient; // Regression-based scaling coefficient on machine rating to get + // HVAC system mass + double converter_mass_user; // Override regular regression-based calculation of converter mass + // with this value + double transformer_mass_user; // Override regular regression-based calculation of transformer + // mass with this value + std::string bedplate_material; // Material name identifier + std::string mb1type; // Type of bearing for first main bearing + std::string mb2type; // Type of bearing for second main bearing + bool uptower; // If power electronics are located uptower (True) or at tower base (False) + std::string gear_configuration; // 3-letter string of Es or Ps to denote epicyclic or parallel + // gear configuration + std::vector planet_numbers; // Number of planets for epicyclic stages (use 0 for parallel) + + void parse(const YAML::Node& node) { + uptilt = node["uptilt"] ? node["uptilt"].as() : 0.; + distance_tt_hub = node["distance_tt_hub"] ? node["distance_tt_hub"].as() : 0.; + distance_hub_mb = node["distance_hub_mb"] ? node["distance_hub_mb"].as() : 0.; + distance_mb_mb = node["distance_mb_mb"] ? node["distance_mb_mb"].as() : 0.; + overhang = node["overhang"] ? node["overhang"].as() : 0.; + generator_length = node["generator_length"] ? node["generator_length"].as() : 0.; + generator_radius_user = + node["generator_radius_user"] ? node["generator_radius_user"].as() : 0.; + generator_mass_user = + node["generator_mass_user"] ? node["generator_mass_user"].as() : 0.; + if (node["generator_rpm_efficiency_user"]) { + generator_rpm_efficiency_user.parse(node["generator_rpm_efficiency_user"]); + } + gear_ratio = node["gear_ratio"] ? node["gear_ratio"].as() : 0.; + gearbox_length_user = + node["gearbox_length_user"] ? node["gearbox_length_user"].as() : 0.; + gearbox_radius_user = + node["gearbox_radius_user"] ? node["gearbox_radius_user"].as() : 0.; + gearbox_mass_user = node["gearbox_mass_user"] ? node["gearbox_mass_user"].as() : 0.; + gearbox_efficiency = + node["gearbox_efficiency"] ? node["gearbox_efficiency"].as() : 0.; + damping_ratio = node["damping_ratio"] ? node["damping_ratio"].as() : 0.; + lss_diameter = node["lss_diameter"] ? node["lss_diameter"].as>() + : std::vector(); + lss_wall_thickness = node["lss_wall_thickness"] + ? node["lss_wall_thickness"].as>() + : std::vector(); + lss_material = node["lss_material"] ? node["lss_material"].as() : ""; + hss_length = node["hss_length"] ? node["hss_length"].as() : 0.; + hss_diameter = node["hss_diameter"] ? node["hss_diameter"].as>() + : std::vector(); + hss_wall_thickness = node["hss_wall_thickness"] + ? node["hss_wall_thickness"].as>() + : std::vector(); + hss_material = node["hss_material"] ? node["hss_material"].as() : ""; + nose_diameter = node["nose_diameter"] ? node["nose_diameter"].as>() + : std::vector(); + nose_wall_thickness = node["nose_wall_thickness"] + ? node["nose_wall_thickness"].as>() + : std::vector(); + if (node["bedplate_wall_thickness"]) { + bedplate_wall_thickness.parse(node["bedplate_wall_thickness"]); + } + bedplate_flange_width = + node["bedplate_flange_width"] ? node["bedplate_flange_width"].as() : 0.; + bedplate_flange_thickness = + node["bedplate_flange_thickness"] ? node["bedplate_flange_thickness"].as() : 0.; + bedplate_web_thickness = + node["bedplate_web_thickness"] ? node["bedplate_web_thickness"].as() : 0.; + brake_mass_user = node["brake_mass_user"] ? node["brake_mass_user"].as() : 0.; + hvac_mass_coefficient = + node["hvac_mass_coefficient"] ? node["hvac_mass_coefficient"].as() : 0.; + converter_mass_user = + node["converter_mass_user"] ? node["converter_mass_user"].as() : 0.; + transformer_mass_user = + node["transformer_mass_user"] ? node["transformer_mass_user"].as() : 0.; + bedplate_material = + node["bedplate_material"] ? node["bedplate_material"].as() : ""; + mb1type = node["mb1type"] ? node["mb1type"].as() : ""; + mb2type = node["mb2type"] ? node["mb2type"].as() : ""; + uptower = node["uptower"] ? node["uptower"].as() : false; + gear_configuration = + node["gear_configuration"] ? node["gear_configuration"].as() : ""; + planet_numbers = node["planet_numbers"] ? node["planet_numbers"].as>() + : std::vector(); + } +}; + +// Generator +struct Generator { + double mass_coefficient; // When not doing a detailed generator design, use a simplified + // approach to generator scaling. This input allows for overriding of + // the regression-based scaling coefficient to obtain generator mass + std::string generator_type; + double b_r; // Words + double p_fe0e; // Words + double p_fe0h; // Words + double s_n; // Words + double s_nmax; // Words + double alpha_p; // Words + double b_r_tau_r; // Words + double b_ro; // Words + double b_s_tau_s; // Words + double b_so; // Words + double cofi; // Words + double freq; // Words + double h_i; // Words + double h_sy0; // Words + double h_w; // Words + double k_fes; // Words + double k_fillr; // Words + double k_fills; // Words + double k_s; // Words + int m; // Words + double mu_0; // Permittivity of free space + double mu_r; // Words + double p; // Words + double phi; // Words + int q1; // Words + int q3; // Words + double ratio_mw2pp; // Words + double resist_cu; // Resistivity of copper + double sigma; // Maximum allowable shear stress + double y_tau_p; // Words + double y_tau_pr; // Words + double i_0; // Words + double d_r; // Words + double h_m; // Words + double h_0; // Words + double h_s; // Words + double len_s; // Words + double n_r; // Words + double rad_ag; // Words + double t_wr; // Words + double n_s; // Words + double b_st; // Words + double d_s; // Words + double t_ws; // Words + double rho_copper; // Copper density + double rho_fe; // Structural steel density + double rho_fes; // Electrical steel density + double rho_pm; // Permanent magnet density + double c_cu; // Copper cost + double c_fe; // Structural steel cost + double c_fes; // Electrical steel cost + double c_pm; // Permanent magnet cost + + void parse(const YAML::Node& node) { + mass_coefficient = node["mass_coefficient"] ? node["mass_coefficient"].as() : 0.; + generator_type = node["generator_type"] ? node["generator_type"].as() : ""; + b_r = node["b_r"] ? node["b_r"].as() : 0.; + p_fe0e = node["p_fe0e"] ? node["p_fe0e"].as() : 0.; + p_fe0h = node["p_fe0h"] ? node["p_fe0h"].as() : 0.; + s_n = node["s_n"] ? node["s_n"].as() : 0.; + s_nmax = node["s_nmax"] ? node["s_nmax"].as() : 0.; + alpha_p = node["alpha_p"] ? node["alpha_p"].as() : 0.; + b_r_tau_r = node["b_r_tau_r"] ? node["b_r_tau_r"].as() : 0.; + b_ro = node["b_ro"] ? node["b_ro"].as() : 0.; + b_s_tau_s = node["b_s_tau_s"] ? node["b_s_tau_s"].as() : 0.; + b_so = node["b_so"] ? node["b_so"].as() : 0.; + cofi = node["cofi"] ? node["cofi"].as() : 0.; + freq = node["freq"] ? node["freq"].as() : 0.; + h_i = node["h_i"] ? node["h_i"].as() : 0.; + h_sy0 = node["h_sy0"] ? node["h_sy0"].as() : 0.; + h_w = node["h_w"] ? node["h_w"].as() : 0.; + k_fes = node["k_fes"] ? node["k_fes"].as() : 0.; + k_fillr = node["k_fillr"] ? node["k_fillr"].as() : 0.; + k_fills = node["k_fills"] ? node["k_fills"].as() : 0.; + k_s = node["k_s"] ? node["k_s"].as() : 0.; + m = node["m"] ? node["m"].as() : 0; + mu_0 = node["mu_0"] ? node["mu_0"].as() : 0.; + mu_r = node["mu_r"] ? node["mu_r"].as() : 0.; + p = node["p"] ? node["p"].as() : 0.; + phi = node["phi"] ? node["phi"].as() : 0.; + q1 = node["q1"] ? node["q1"].as() : 0; + q3 = node["q3"] ? node["q3"].as() : 0; + ratio_mw2pp = node["ratio_mw2pp"] ? node["ratio_mw2pp"].as() : 0.; + resist_cu = node["resist_cu"] ? node["resist_cu"].as() : 0.; + sigma = node["sigma"] ? node["sigma"].as() : 0.; + y_tau_p = node["y_tau_p"] ? node["y_tau_p"].as() : 0.; + y_tau_pr = node["y_tau_pr"] ? node["y_tau_pr"].as() : 0.; + i_0 = node["i_0"] ? node["i_0"].as() : 0.; + d_r = node["d_r"] ? node["d_r"].as() : 0.; + h_m = node["h_m"] ? node["h_m"].as() : 0.; + h_0 = node["h_0"] ? node["h_0"].as() : 0.; + h_s = node["h_s"] ? node["h_s"].as() : 0.; + len_s = node["len_s"] ? node["len_s"].as() : 0.; + n_r = node["n_r"] ? node["n_r"].as() : 0.; + rad_ag = node["rad_ag"] ? node["rad_ag"].as() : 0.; + t_wr = node["t_wr"] ? node["t_wr"].as() : 0.; + n_s = node["n_s"] ? node["n_s"].as() : 0.; + b_st = node["b_st"] ? node["b_st"].as() : 0.; + d_s = node["d_s"] ? node["d_s"].as() : 0.; + t_ws = node["t_ws"] ? node["t_ws"].as() : 0.; + rho_copper = node["rho_copper"] ? node["rho_copper"].as() : 0.; + rho_fe = node["rho_fe"] ? node["rho_fe"].as() : 0.; + rho_fes = node["rho_fes"] ? node["rho_fes"].as() : 0.; + rho_pm = node["rho_pm"] ? node["rho_pm"].as() : 0.; + c_cu = node["c_cu"] ? node["c_cu"].as() : 0.; + c_fe = node["c_fe"] ? node["c_fe"].as() : 0.; + c_fes = node["c_fes"] ? node["c_fes"].as() : 0.; + c_pm = node["c_pm"] ? node["c_pm"].as() : 0.; + } +}; + +// Nacelle +struct Nacelle { + Drivetrain drivetrain; // Inputs to WISDEM specific drivetrain sizing tool, DrivetrainSE + Generator generator; + + void parse(const YAML::Node& node) { + if (node["drivetrain"]) { + drivetrain.parse(node["drivetrain"]); + } + if (node["generator"]) { + generator.parse(node["generator"]); + } + } +}; + +// OuterDiameter +struct OuterDiameter { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// DragCoefficient +struct DragCoefficient { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// OuterShapeBem_2 +struct OuterShapeBem_2 { + ReferenceAxis reference_axis; + OuterDiameter outer_diameter; + DragCoefficient drag_coefficient; + + void parse(const YAML::Node& node) { + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["outer_diameter"]) { + outer_diameter.parse(node["outer_diameter"]); + } + if (node["drag_coefficient"]) { + drag_coefficient.parse(node["drag_coefficient"]); + } + } +}; + +// InternalStructure2DFem_1 +struct InternalStructure2DFem_1 { + double outfitting_factor; // Scaling factor for the tower mass to account for auxiliary + // structures, such as elevator, ladders, cables, platforms, etc + ReferenceAxis reference_axis; + std::vector layers; // ... + + void parse(const YAML::Node& node) { + outfitting_factor = node["outfitting_factor"] ? node["outfitting_factor"].as() : 0.; + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["layers"]) { + for (const auto& item : node["layers"]) { + Layers x; + x.parse(item); + layers.push_back(x); + } + } + } +}; + +// Tower +struct Tower { + OuterShapeBem_2 outer_shape_bem; + ElasticPropertiesMb elastic_properties_mb; + InternalStructure2DFem_1 internal_structure_2d_fem; + + void parse(const YAML::Node& node) { + if (node["outer_shape_bem"]) { + outer_shape_bem.parse(node["outer_shape_bem"]); + } + if (node["elastic_properties_mb"]) { + elastic_properties_mb.parse(node["elastic_properties_mb"]); + } + if (node["internal_structure_2d_fem"]) { + internal_structure_2d_fem.parse(node["internal_structure_2d_fem"]); + } + } +}; + +// OuterShape +struct OuterShape { + ReferenceAxis reference_axis; + OuterDiameter outer_diameter; + DragCoefficient drag_coefficient; + + void parse(const YAML::Node& node) { + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["outer_diameter"]) { + outer_diameter.parse(node["outer_diameter"]); + } + if (node["drag_coefficient"]) { + drag_coefficient.parse(node["drag_coefficient"]); + } + } +}; + +// InternalStructure2DFem_2 +struct InternalStructure2DFem_2 { + double outfitting_factor; // Scaling factor for the tower mass to account for auxiliary + // structures, such as elevator, ladders, cables, platforms, etc + ReferenceAxis reference_axis; + std::vector layers; // ... + + void parse(const YAML::Node& node) { + outfitting_factor = node["outfitting_factor"] ? node["outfitting_factor"].as() : 0.; + if (node["reference_axis"]) { + reference_axis.parse(node["reference_axis"]); + } + if (node["layers"]) { + for (const auto& item : node["layers"]) { + Layers x; + x.parse(item); + layers.push_back(x); + } + } + } +}; + +// Monopile +struct Monopile { + double transition_piece_mass; // Total mass of transition piece + double transition_piece_cost; // Total cost of transition piece + double gravity_foundation_mass; // Total mass of gravity foundation addition onto monopile + OuterShape outer_shape; + ElasticPropertiesMb elastic_properties_mb; + InternalStructure2DFem_2 internal_structure_2d_fem; + + void parse(const YAML::Node& node) { + transition_piece_mass = + node["transition_piece_mass"] ? node["transition_piece_mass"].as() : 0.; + transition_piece_cost = + node["transition_piece_cost"] ? node["transition_piece_cost"].as() : 0.; + gravity_foundation_mass = + node["gravity_foundation_mass"] ? node["gravity_foundation_mass"].as() : 0.; + if (node["outer_shape"]) { + outer_shape.parse(node["outer_shape"]); + } + if (node["elastic_properties_mb"]) { + elastic_properties_mb.parse(node["elastic_properties_mb"]); + } + if (node["internal_structure_2d_fem"]) { + internal_structure_2d_fem.parse(node["internal_structure_2d_fem"]); + } + } +}; + +// Jacket +struct Jacket { + double transition_piece_mass; // Total mass of transition piece + double transition_piece_cost; // Total cost of transition piece + double gravity_foundation_mass; // Total mass of gravity foundation addition onto monopile + std::string material; // Material of jacket members + int n_bays; // Number of bays (x-joints) in the vertical direction for jackets. + int n_legs; // Number of legs for jacket. + double r_foot; // Radius of foot (bottom) of jacket, in meters. + double r_head; // Radius of head (top) of jacket, in meters. + double height; // Overall jacket height, meters. + double leg_thickness; // Leg thickness, meters. Constant throughout each leg. + std::vector brace_diameters; + std::vector brace_thicknesses; + std::vector bay_spacing; + std::vector leg_spacing; + bool x_mb; // Mud brace included if true. + double leg_diameter; // Leg diameter, meters. Constant throughout each leg. + + void parse(const YAML::Node& node) { + transition_piece_mass = + node["transition_piece_mass"] ? node["transition_piece_mass"].as() : 0.; + transition_piece_cost = + node["transition_piece_cost"] ? node["transition_piece_cost"].as() : 0.; + gravity_foundation_mass = + node["gravity_foundation_mass"] ? node["gravity_foundation_mass"].as() : 0.; + material = node["material"] ? node["material"].as() : ""; + n_bays = node["n_bays"] ? node["n_bays"].as() : 0; + n_legs = node["n_legs"] ? node["n_legs"].as() : 0; + r_foot = node["r_foot"] ? node["r_foot"].as() : 0.; + r_head = node["r_head"] ? node["r_head"].as() : 0.; + height = node["height"] ? node["height"].as() : 0.; + leg_thickness = node["leg_thickness"] ? node["leg_thickness"].as() : 0.; + brace_diameters = node["brace_diameters"] ? node["brace_diameters"].as>() + : std::vector(); + brace_thicknesses = node["brace_thicknesses"] + ? node["brace_thicknesses"].as>() + : std::vector(); + bay_spacing = node["bay_spacing"] ? node["bay_spacing"].as>() + : std::vector(); + leg_spacing = node["leg_spacing"] ? node["leg_spacing"].as>() + : std::vector(); + x_mb = node["x_mb"] ? node["x_mb"].as() : false; + leg_diameter = node["leg_diameter"] ? node["leg_diameter"].as() : 0.; + } +}; + +// If this joint is compliant is certain DOFs, then specify which are compliant (True) in the +// member/element coordinate system). If not specified, default is all entries are False (completely +// rigid). For instance, a ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True +struct Reactions { + bool rx; + bool ry; + bool rz; + bool rxx; + bool ryy; + bool rzz; + std::vector euler; // Euler angles [alpha, beta, gamma] that describe the rotation of + // the Reaction coordinate system relative to the global coordinate + // system α is a rotation around the z axis, β is a rotation around + // the x' axis, γ is a rotation around the z" axis. + + void parse(const YAML::Node& node) { + rx = node["rx"] ? node["rx"].as() : false; + ry = node["ry"] ? node["ry"].as() : false; + rz = node["rz"] ? node["rz"].as() : false; + rxx = node["rxx"] ? node["rxx"].as() : false; + ryy = node["ryy"] ? node["ryy"].as() : false; + rzz = node["rzz"] ? node["rzz"].as() : false; + euler = node["euler"] ? node["euler"].as>() : std::vector(); + } +}; + +// Joints +struct Joints { + std::string name; // Unique name of the joint (node) + std::vector + location; // Coordinates (x,y,z or r,θ,z) of the joint in the global coordinate system. + bool transition; // Whether the transition piece and turbine tower attach at this node + bool cylindrical; // Whether to use cylindrical coordinates (r,θ,z), with (r,θ) lying in the + // x/y-plane, instead of Cartesian coordinates. + Reactions reactions; // If this joint is compliant is certain DOFs, then specify which are + // compliant (True) in the member/element coordinate system). If not + // specified, default is all entries are False (completely rigid). For + // instance, a ball joint would be Rx=Ry=Rz=False, Rxx=Ryy=Rzz=True + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + location = + node["location"] ? node["location"].as>() : std::vector(); + transition = node["transition"] ? node["transition"].as() : false; + cylindrical = node["cylindrical"] ? node["cylindrical"].as() : false; + if (node["reactions"]) { + reactions.parse(node["reactions"]); + } + } +}; + +// OuterShape_1 +struct OuterShape_1 { + std::string shape; // Specifies cross-sectional shape of the member. If circular, then the + // outer_diameter field is required. If polygonal, then the side_lengths, + // angles, and rotation fields are required + OuterDiameter outer_diameter; // Gridded values describing diameter at non-dimensional axis from + // joint1 to joint2 + std::vector side_lengths1; // Polygon side lengths at joint1 + std::vector side_lengths2; // Polygon side lengths at joint1 + std::vector angles; // Polygon angles with the ordering such that angle[i] is between + // side_length[i] and side_length[i+1] + double rotation; // Angle between principle axes of the cross-section and the member coordinate + // system. Essentially the rotation of the member if both joints were placed + // on the global x-y axis with the first side length along the z-axis + + void parse(const YAML::Node& node) { + shape = node["shape"] ? node["shape"].as() : ""; + if (node["outer_diameter"]) { + outer_diameter.parse(node["outer_diameter"]); + } + side_lengths1 = node["side_lengths1"] ? node["side_lengths1"].as>() + : std::vector(); + side_lengths2 = node["side_lengths2"] ? node["side_lengths2"].as>() + : std::vector(); + angles = node["angles"] ? node["angles"].as>() : std::vector(); + rotation = node["rotation"] ? node["rotation"].as() : 0.; + } +}; + +// Layers_1 +struct Layers_1 { + std::string name; // structural component identifier + std::string material; // material identifier + Thickness thickness; // Gridded values describing thickness along non-dimensional axis from + // joint1 to joint2 + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + material = node["material"] ? node["material"].as() : ""; + if (node["thickness"]) { + thickness.parse(node["thickness"]); + } + } +}; + +// RingStiffeners +struct RingStiffeners { + std::string material; // material identifier + double flange_thickness; + double flange_width; + double web_height; + double web_thickness; + double spacing; // Spacing between stiffeners in non-dimensional grid coordinates. Value of 0.0 + // means no stiffeners + + void parse(const YAML::Node& node) { + material = node["material"] ? node["material"].as() : ""; + flange_thickness = node["flange_thickness"] ? node["flange_thickness"].as() : 0.; + flange_width = node["flange_width"] ? node["flange_width"].as() : 0.; + web_height = node["web_height"] ? node["web_height"].as() : 0.; + web_thickness = node["web_thickness"] ? node["web_thickness"].as() : 0.; + spacing = node["spacing"] ? node["spacing"].as() : 0.; + } +}; + +// LongitudinalStiffeners +struct LongitudinalStiffeners { + std::string material; // material identifier + double flange_thickness; + double flange_width; + double web_height; + double web_thickness; + double + spacing; // Spacing between stiffeners in angle (radians). Value of 0.0 means no stiffeners + + void parse(const YAML::Node& node) { + material = node["material"] ? node["material"].as() : ""; + flange_thickness = node["flange_thickness"] ? node["flange_thickness"].as() : 0.; + flange_width = node["flange_width"] ? node["flange_width"].as() : 0.; + web_height = node["web_height"] ? node["web_height"].as() : 0.; + web_thickness = node["web_thickness"] ? node["web_thickness"].as() : 0.; + spacing = node["spacing"] ? node["spacing"].as() : 0.; + } +}; + +// Bulkhead +struct Bulkhead { + std::string material; // material identifier + Thickness + thickness; // thickness of the bulkhead at non-dimensional locations of the member [0..1] + + void parse(const YAML::Node& node) { + material = node["material"] ? node["material"].as() : ""; + if (node["thickness"]) { + thickness.parse(node["thickness"]); + } + } +}; + +// Ballast +struct Ballast { + bool variable_flag; // If true, then this ballast is variable and adjusted by control system. If + // false, then considered permanent + std::string material; // material identifier + std::vector grid; + double volume; // Total volume of ballast (permanent ballast only) + + void parse(const YAML::Node& node) { + variable_flag = node["variable_flag"] ? node["variable_flag"].as() : false; + material = node["material"] ? node["material"].as() : ""; + grid = node["grid"] ? node["grid"].as>() : std::vector(); + volume = node["volume"] ? node["volume"].as() : 0.; + } +}; + +// InternalStructure +struct InternalStructure { + double outfitting_factor; // Scaling factor for the member mass to account for auxiliary + // structures, such as elevator, ladders, cables, platforms, + // fasteners, etc + std::vector layers; // Material layer properties + RingStiffeners ring_stiffeners; + LongitudinalStiffeners longitudinal_stiffeners; + Bulkhead bulkhead; + std::vector ballast; // Different types of permanent and/or variable ballast + + void parse(const YAML::Node& node) { + outfitting_factor = node["outfitting_factor"] ? node["outfitting_factor"].as() : 0.; + if (node["layers"]) { + for (const auto& item : node["layers"]) { + Layers_1 x; + x.parse(item); + layers.push_back(x); + } + } + if (node["ring_stiffeners"]) { + ring_stiffeners.parse(node["ring_stiffeners"]); + } + if (node["longitudinal_stiffeners"]) { + longitudinal_stiffeners.parse(node["longitudinal_stiffeners"]); + } + if (node["bulkhead"]) { + bulkhead.parse(node["bulkhead"]); + } + if (node["ballast"]) { + for (const auto& item : node["ballast"]) { + Ballast x; + x.parse(item); + ballast.push_back(x); + } + } + } +}; + +// AxialJoints +struct AxialJoints { + std::string name; // Unique name of joint + double grid; // Non-dimensional value along member axis + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + grid = node["grid"] ? node["grid"].as() : 0.; + } +}; + +// Members +struct Members { + std::string name; // Name of the member + std::string joint1; // Name of joint/node connection + std::string joint2; // Name of joint/node connection + OuterShape_1 outer_shape; + InternalStructure internal_structure; + std::vector + axial_joints; // Define joints along non-dimensional axis of this member + double ca; // User-defined added mass coefficient + double cp; // User-defined pressure coefficient + double cd; // User-defined drag coefficient + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + joint1 = node["joint1"] ? node["joint1"].as() : ""; + joint2 = node["joint2"] ? node["joint2"].as() : ""; + if (node["outer_shape"]) { + outer_shape.parse(node["outer_shape"]); + } + if (node["internal_structure"]) { + internal_structure.parse(node["internal_structure"]); + } + if (node["axial_joints"]) { + for (const auto& item : node["axial_joints"]) { + AxialJoints x; + x.parse(item); + axial_joints.push_back(x); + } + } + ca = node["ca"] ? node["ca"].as() : 0.; + cp = node["cp"] ? node["cp"].as() : 0.; + cd = node["cd"] ? node["cd"].as() : 0.; + } +}; + +// RigidBodies +struct RigidBodies { + std::string joint1; // Name of joint/node connection + double mass; // Mass of this rigid body + double cost; // Cost of this rigid body + std::vector + cm_offset; // Offset from joint location to center of mass (CM) of body in dx, dy, dz + std::vector moments_of_inertia; // Moments of inertia around body CM in Ixx, Iyy, Izz + double ca; // User-defined added mass coefficient + double cp; // User-defined pressure coefficient + double cd; // User-defined drag coefficient + + void parse(const YAML::Node& node) { + joint1 = node["joint1"] ? node["joint1"].as() : ""; + mass = node["mass"] ? node["mass"].as() : 0.; + cost = node["cost"] ? node["cost"].as() : 0.; + cm_offset = + node["cm_offset"] ? node["cm_offset"].as>() : std::vector(); + moments_of_inertia = node["moments_of_inertia"] + ? node["moments_of_inertia"].as>() + : std::vector(); + ca = node["ca"] ? node["ca"].as() : 0.; + cp = node["cp"] ? node["cp"].as() : 0.; + cd = node["cd"] ? node["cd"].as() : 0.; + } +}; + +// Ontology definition for floating platforms (substructures) suitable for use with the WEIS +// co-design analysis tool +struct FloatingPlatform { + std::vector joints; + std::vector members; + std::vector rigid_bodies; + double transition_piece_mass; // Total mass of transition piece + double transition_piece_cost; // Total cost of transition piece + + void parse(const YAML::Node& node) { + if (node["joints"]) { + for (const auto& item : node["joints"]) { + Joints x; + x.parse(item); + joints.push_back(x); + } + } + if (node["members"]) { + for (const auto& item : node["members"]) { + Members x; + x.parse(item); + members.push_back(x); + } + } + if (node["rigid_bodies"]) { + for (const auto& item : node["rigid_bodies"]) { + RigidBodies x; + x.parse(item); + rigid_bodies.push_back(x); + } + } + transition_piece_mass = + node["transition_piece_mass"] ? node["transition_piece_mass"].as() : 0.; + transition_piece_cost = + node["transition_piece_cost"] ? node["transition_piece_cost"].as() : 0.; + } +}; + +// Nodes +struct Nodes { + std::string name; // Name or ID of this node for use in line segment + std::string node_type; + std::vector + location; // – Coordinates x, y, and z of the connection (relative to inertial reference + // frame if Fixed or Connect, relative to platform reference frame if Vessel). In + // the case of Connect nodes, it is simply an initial guess for position before + // MoorDyn calculates the equilibrium initial position. + std::string joint; // For anchor positions and fairlead attachments, reference a joint name from + // the "joints" section or an "axial_joint" on a member + std::string anchor_type; // Name of anchor type from anchor_type list + std::string fairlead_type; + double node_mass; // Clump weight mass + double node_volume; // Floater volume + double drag_area; // Product of drag coefficient and projected area (assumed constant in all + // directions) to calculate a drag force for the node + double added_mass; // Added mass coefficient used along with node volume to calculate added mass + // on node + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + node_type = node["node_type"] ? node["node_type"].as() : ""; + location = + node["location"] ? node["location"].as>() : std::vector(); + joint = node["joint"] ? node["joint"].as() : ""; + anchor_type = node["anchor_type"] ? node["anchor_type"].as() : ""; + fairlead_type = node["fairlead_type"] ? node["fairlead_type"].as() : ""; + node_mass = node["node_mass"] ? node["node_mass"].as() : 0.; + node_volume = node["node_volume"] ? node["node_volume"].as() : 0.; + drag_area = node["drag_area"] ? node["drag_area"].as() : 0.; + added_mass = node["added_mass"] ? node["added_mass"].as() : 0.; + } +}; + +// Lines +struct Lines { + std::string name; // ID of this line + std::string line_type; // Reference to line type database + double unstretched_length; // length of line segment prior to tensioning + std::string node1; // node id of first line connection + std::string node2; // node id of second line connection + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + line_type = node["line_type"] ? node["line_type"].as() : ""; + unstretched_length = + node["unstretched_length"] ? node["unstretched_length"].as() : 0.; + node1 = node["node1"] ? node["node1"].as() : ""; + node2 = node["node2"] ? node["node2"].as() : ""; + } +}; + +// LineTypes +struct LineTypes { + std::string name; // Name of material or line type to be referenced by line segments + double diameter; // the volume-equivalent diameter of the line – the diameter of a cylinder + // having the same displacement per unit length + std::string type; // Type of material for property lookup + double mass_density; // mass per unit length (in air) + double + stiffness; // axial line stiffness, product of elasticity modulus and cross-sectional area + double cost; // cost per unit length + double breaking_load; // line break tension + double damping; // internal damping (BA) + double transverse_added_mass; // transverse added mass coefficient (with respect to line + // displacement) + double tangential_added_mass; // tangential added mass coefficient (with respect to line + // displacement) + double transverse_drag; // transverse drag coefficient (with respect to frontal area, d*l) + double tangential_drag; // tangential drag coefficient (with respect to surface area, π*d*l) + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + diameter = node["diameter"] ? node["diameter"].as() : 0.; + type = node["type"] ? node["type"].as() : ""; + mass_density = node["mass_density"] ? node["mass_density"].as() : 0.; + stiffness = node["stiffness"] ? node["stiffness"].as() : 0.; + cost = node["cost"] ? node["cost"].as() : 0.; + breaking_load = node["breaking_load"] ? node["breaking_load"].as() : 0.; + damping = node["damping"] ? node["damping"].as() : 0.; + transverse_added_mass = + node["transverse_added_mass"] ? node["transverse_added_mass"].as() : 0.; + tangential_added_mass = + node["tangential_added_mass"] ? node["tangential_added_mass"].as() : 0.; + transverse_drag = node["transverse_drag"] ? node["transverse_drag"].as() : 0.; + tangential_drag = node["tangential_drag"] ? node["tangential_drag"].as() : 0.; + } +}; + +// AnchorTypes +struct AnchorTypes { + std::string name; // Name of anchor to be referenced by anchor_id in Nodes section + std::string type; // Type of anchor for property lookup + double mass; // mass of the anchor + double cost; // cost of the anchor + double max_lateral_load; // Maximum lateral load (parallel to the sea floor) that the anchor can + // support + double max_vertical_load; // Maximum vertical load (perpendicular to the sea floor) that the + // anchor can support + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + type = node["type"] ? node["type"].as() : ""; + mass = node["mass"] ? node["mass"].as() : 0.; + cost = node["cost"] ? node["cost"].as() : 0.; + max_lateral_load = node["max_lateral_load"] ? node["max_lateral_load"].as() : 0.; + max_vertical_load = node["max_vertical_load"] ? node["max_vertical_load"].as() : 0.; + } +}; + +// Ontology definition for mooring systems suitable for use with the WEIS co-design analysis tool +struct Mooring { + std::vector nodes; // List of nodes in the mooring system + std::vector lines; // List of all mooring line properties in the mooring system + std::vector line_types; // List of mooring line properties used in the system + std::vector anchor_types; // List of anchor properties used in the system + + void parse(const YAML::Node& node) { + if (node["nodes"]) { + for (const auto& item : node["nodes"]) { + Nodes x; + x.parse(item); + nodes.push_back(x); + } + } + if (node["lines"]) { + for (const auto& item : node["lines"]) { + Lines x; + x.parse(item); + lines.push_back(x); + } + } + if (node["line_types"]) { + for (const auto& item : node["line_types"]) { + LineTypes x; + x.parse(item); + line_types.push_back(x); + } + } + if (node["anchor_types"]) { + for (const auto& item : node["anchor_types"]) { + AnchorTypes x; + x.parse(item); + anchor_types.push_back(x); + } + } + } +}; + +// Components +struct Components { + Blade blade; + Hub hub; + Nacelle nacelle; + Tower tower; + Monopile monopile; + Jacket jacket; + FloatingPlatform + floating_platform; // Ontology definition for floating platforms (substructures) suitable + // for use with the WEIS co-design analysis tool + Mooring mooring; // Ontology definition for mooring systems suitable for use with the WEIS + // co-design analysis tool + + void parse(const YAML::Node& node) { + if (node["blade"]) { + blade.parse(node["blade"]); + } + if (node["hub"]) { + hub.parse(node["hub"]); + } + if (node["nacelle"]) { + nacelle.parse(node["nacelle"]); + } + if (node["tower"]) { + tower.parse(node["tower"]); + } + if (node["monopile"]) { + monopile.parse(node["monopile"]); + } + if (node["jacket"]) { + jacket.parse(node["jacket"]); + } + if (node["floating_platform"]) { + floating_platform.parse(node["floating_platform"]); + } + if (node["mooring"]) { + mooring.parse(node["mooring"]); + } + } +}; + +// Airfoil coordinates described from trailing edge (x=1) along the suction side (y>0) to leading +// edge (x=0) back to trailing edge (x=1) along the pressure side (y<0) +struct Coordinates { + std::vector x; + std::vector y; + + void parse(const YAML::Node& node) { + x = node["x"] ? node["x"].as>() : std::vector(); + y = node["y"] ? node["y"].as>() : std::vector(); + } +}; + +// CL +struct CL { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// CM +struct CM { + std::vector grid; + std::vector values; + + void parse(const YAML::Node& node) { + grid = node["grid"] ? node["grid"].as>() : std::vector(); + values = node["values"] ? node["values"].as>() : std::vector(); + } +}; + +// Lift, drag and moment coefficients expressed in terms of angles of attack +struct Polars { + std::string configuration; // Text to identify the setup for the definition of the polars + double re; // Reynolds number of the polars + CL c_l; + CD c_d; + CM c_m; + + void parse(const YAML::Node& node) { + configuration = node["configuration"] ? node["configuration"].as() : ""; + re = node["re"] ? node["re"].as() : 0.; + if (node["c_l"]) { + c_l.parse(node["c_l"]); + } + if (node["c_d"]) { + c_d.parse(node["c_d"]); + } + if (node["c_m"]) { + c_m.parse(node["c_m"]); + } + } +}; + +// Airfoils +struct Airfoils { + std::string name; // Name of the airfoil + Coordinates coordinates; // Airfoil coordinates described from trailing edge (x=1) along the + // suction side (y>0) to leading edge (x=0) back to trailing edge (x=1) + // along the pressure side (y<0) + double relative_thickness; // Thickness of the airfoil expressed non-dimensional + double aerodynamic_center; // Non-dimensional chordwise coordinate of the aerodynamic center + std::vector polars; // Different sets of polars at varying conditions + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + if (node["coordinates"]) { + coordinates.parse(node["coordinates"]); + } + relative_thickness = + node["relative_thickness"] ? node["relative_thickness"].as() : 0.; + aerodynamic_center = + node["aerodynamic_center"] ? node["aerodynamic_center"].as() : 0.; + if (node["polars"]) { + for (const auto& item : node["polars"]) { + Polars x; + x.parse(item); + polars.push_back(x); + } + } + } +}; + +// Materials +struct Materials { + std::string name; // Name of the material + std::string description; // Optional field describing the material + std::string source; // Optional field describing where the data come from + int orth; // Flag to switch between isotropic (0) and orthotropic (1) materials + double rho; // Density of the material. For composites, this is the density of the laminate once + // cured + std::variant> e; // Stiffness modulus. For orthotropic materials, it + // consists of an array with E11, E22 and E33. + std::variant> + g; // Shear stiffness modulus. For orthotropic materials, it consists of an array with G12, + // G13 and G23 + std::variant> + nu; // Poisson ratio. For orthotropic materials, it consists of an array with nu12, nu13 and + // nu23. For isotropic materials, a minimum of -1 and a maximum of 0.5 are imposed. No + // limits are imposed to anisotropic materials. + std::variant> alpha; // Thermal coefficient of expansion + std::variant> + xt; // Ultimate tensile strength. For orthotropic materials, it consists of an array with + // the strength in directions 11, 22 and 33. The values must be positive + std::variant> + xc; // Ultimate compressive strength. For orthotropic materials, it consists of an array + // with the strength in directions 11, 22 and 33. The values must be positive + std::variant> + xy; // Ultimate yield strength for metals. For orthotropic materials, it consists of an + // array with the strength in directions 12, 13 and 23 + std::variant> + s; // Ultimate shear strength. For orthotropic materials, it consists of an array with the + // strength in directions 12, 13 and 23 + double ply_t; // Ply thickness of the composite material + double unit_cost; // Unit cost of the material. For composites, this is the unit cost of the dry + // fabric. + double fvf; // Fiber volume fraction of the composite material + double fwf; // Fiber weight fraction of the composite material + double fiber_density; // Density of the fibers of a composite material. + double area_density_dry; // Aerial density of a fabric of a composite material. + int component_id; // Flag used by the NREL blade cost model + // https://www.nrel.gov/docs/fy19osti/73585.pdf to define the manufacturing + // process behind the laminate. 0 - coating, 1 - sandwich filler , 2 - shell + // skin, 3 - shear webs, 4 - spar caps, 5 - TE reinf. + double waste; // Fraction of material that ends up wasted during manufacturing. This quantity is + // used in the NREL blade cost model https://www.nrel.gov/docs/fy19osti/73585.pdf + double roll_mass; // Mass of a fabric roll. This quantity is used in the NREL blade cost model + // https://www.nrel.gov/docs/fy19osti/73585.pdf + double gic; // Mode 1 critical energy-release rate. It is used by NuMAD from Sandia National + // Laboratories + double giic; // Mode 2 critical energy-release rate. It is used by NuMAD from Sandia National + // Laboratories + double alp0; // Fracture angle under pure transverse compression. It is used by NuMAD from + // Sandia National Laboratories + std::variant> a; // Fatigue S/N curve fitting parameter S=A*N^(-1/m) + std::variant> m; // Fatigue S/N curve fitting parameter S=A*N^(-1/m) + std::variant> r; // Fatigue stress ratio + + void parse(const YAML::Node& node) { + name = node["name"] ? node["name"].as() : ""; + description = node["description"] ? node["description"].as() : ""; + source = node["source"] ? node["source"].as() : ""; + orth = node["orth"] ? node["orth"].as() : 0; + rho = node["rho"] ? node["rho"].as() : 0.; + e = node["e"] ? node["e"].as() : 0.; + g = node["g"] ? node["g"].as() : 0.; + if (!orth) { + nu = node["nu"] ? node["nu"].as() : 0.; + } else { + nu = node["nu"] ? node["nu"].as>() : std::vector(); + } + if (!orth) { + alpha = node["alpha"] ? node["alpha"].as() : 0.; + } else { + alpha = node["alpha"] ? node["alpha"].as>() : std::vector(); + } + xt = node["xt"] ? node["xt"].as() : 0.; + xc = node["xc"] ? node["xc"].as() : 0.; + xy = node["xy"] ? node["xy"].as() : 0.; + s = node["s"] ? node["s"].as() : 0.; + ply_t = node["ply_t"] ? node["ply_t"].as() : 0.; + unit_cost = node["unit_cost"] ? node["unit_cost"].as() : 0.; + fvf = node["fvf"] ? node["fvf"].as() : 0.; + fwf = node["fwf"] ? node["fwf"].as() : 0.; + fiber_density = node["fiber_density"] ? node["fiber_density"].as() : 0.; + area_density_dry = node["area_density_dry"] ? node["area_density_dry"].as() : 0.; + component_id = node["component_id"] ? node["component_id"].as() : 0; + waste = node["waste"] ? node["waste"].as() : 0.; + roll_mass = node["roll_mass"] ? node["roll_mass"].as() : 0.; + gic = node["gic"] ? node["gic"].as() : 0.; + giic = node["giic"] ? node["giic"].as() : 0.; + alp0 = node["alp0"] ? node["alp0"].as() : 0.; + a = node["a"] ? node["a"].as() : 0.; + m = node["m"] ? node["m"].as() : 0.; + r = node["r"] ? node["r"].as() : 0.; + } +}; + +// Supervisory +struct Supervisory { + double vin; // Cut-in wind speed of the wind turbine. + double vout; // Cut-out wind speed of the wind turbine. + double maxts; // Maximum allowable blade tip speed. + + void parse(const YAML::Node& node) { + vin = node["vin"] ? node["vin"].as() : 0.; + vout = node["vout"] ? node["vout"].as() : 0.; + maxts = node["maxts"] ? node["maxts"].as() : 0.; + } +}; + +// Pitch_1 +struct Pitch_1 { + double min_pitch; // Minimum pitch angle, where the default is 0 degrees. It is used by the + // ROSCO controller (https://github.com/NREL/ROSCO) + double max_pitch_rate; // Maximum pitch rate of the rotor blades. + + void parse(const YAML::Node& node) { + min_pitch = node["min_pitch"] ? node["min_pitch"].as() : 0.; + max_pitch_rate = node["max_pitch_rate"] ? node["max_pitch_rate"].as() : 0.; + } +}; + +// Torque +struct Torque { + double max_torque_rate; // Maximum torque rate of the wind turbine generator. + double tsr; // Rated tip speed ratio of the wind turbine. As default, it is maintained constant + // in region II. + double vs_minspd; // Minimum rotor speed. It is used by the ROSCO controller + // (https://github.com/NREL/ROSCO) + double vs_maxspd; // Maximum rotor speed. It is used by the ROSCO controller + // (https://github.com/NREL/ROSCO) + + void parse(const YAML::Node& node) { + max_torque_rate = node["max_torque_rate"] ? node["max_torque_rate"].as() : 0.; + tsr = node["tsr"] ? node["tsr"].as() : 0.; + vs_minspd = node["vs_minspd"] ? node["vs_minspd"].as() : 0.; + vs_maxspd = node["vs_maxspd"] ? node["vs_maxspd"].as() : 0.; + } +}; + +// Control +struct Control { + Supervisory supervisory; + Pitch_1 pitch; + Torque torque; + + void parse(const YAML::Node& node) { + if (node["supervisory"]) { + supervisory.parse(node["supervisory"]); + } + if (node["pitch"]) { + pitch.parse(node["pitch"]); + } + if (node["torque"]) { + torque.parse(node["torque"]); + } + } +}; + +// Environment +struct Environment { + double gravity; // Gravitational acceleration + double air_density; // Density of air. + double air_dyn_viscosity; // Dynamic viscosity of air. + double air_pressure; // Atmospheric pressure of air + double air_vapor_pressure; // Vapor pressure of fluid + double weib_shape_parameter; // Shape factor of the Weibull wind distribution. + double air_speed_sound; // Speed of sound in air. + double shear_exp; // Shear exponent of the atmospheric boundary layer. + double water_density; // Density of water. + double water_dyn_viscosity; // Dynamic viscosity of water. + double water_depth; // Water depth for offshore environment. + double soil_shear_modulus; // Shear modulus of the soil. + double soil_poisson; // Poisson ratio of the soil. + double v_mean; // Average inflow wind speed. If different than 0, this will overwrite the V mean + // of the IEC wind class + + void parse(const YAML::Node& node) { + gravity = node["gravity"] ? node["gravity"].as() : 0.; + air_density = node["air_density"] ? node["air_density"].as() : 0.; + air_dyn_viscosity = node["air_dyn_viscosity"] ? node["air_dyn_viscosity"].as() : 0.; + air_pressure = node["air_pressure"] ? node["air_pressure"].as() : 0.; + air_vapor_pressure = + node["air_vapor_pressure"] ? node["air_vapor_pressure"].as() : 0.; + weib_shape_parameter = + node["weib_shape_parameter"] ? node["weib_shape_parameter"].as() : 0.; + air_speed_sound = node["air_speed_sound"] ? node["air_speed_sound"].as() : 0.; + shear_exp = node["shear_exp"] ? node["shear_exp"].as() : 0.; + water_density = node["water_density"] ? node["water_density"].as() : 0.; + water_dyn_viscosity = + node["water_dyn_viscosity"] ? node["water_dyn_viscosity"].as() : 0.; + water_depth = node["water_depth"] ? node["water_depth"].as() : 0.; + soil_shear_modulus = + node["soil_shear_modulus"] ? node["soil_shear_modulus"].as() : 0.; + soil_poisson = node["soil_poisson"] ? node["soil_poisson"].as() : 0.; + v_mean = node["v_mean"] ? node["v_mean"].as() : 0.; + } +}; + +// Bos +struct Bos { + double plant_turbine_spacing; // Distance between turbines in the primary grid streamwise + // direction in rotor diameters + double plant_row_spacing; // Distance between turbine rows in the cross-wind direction in rotor + // diameters + double commissioning_pct; // Fraction of total BOS cost that is due to commissioning + double decommissioning_pct; // Fraction of total BOS cost that is due to decommissioning + double distance_to_substation; // Distance from centroid of plant to substation in km + double distance_to_interconnection; // Distance from substation to grid connection in km + double distance_to_landfall; // Distance from plant centroid to export cable landfall for + // offshore plants + double distance_to_site; // Distance from port to plant centroid for offshore plants + double interconnect_voltage; // Voltage of cabling to grid interconnection + double port_cost_per_month; // Monthly port rental fees + double site_auction_price; // Cost to secure site lease + double site_assessment_plan_cost; // Cost to do engineering plan for site assessment + double site_assessment_cost; // Cost to execute site assessment + double construction_operations_plan_cost; // Cost to do construction planning + double boem_review_cost; // Cost for additional review by U.S. Dept of Interior Bureau of Ocean + // Energy Management (BOEM) + double design_install_plan_cost; // Cost to do installation planning + + void parse(const YAML::Node& node) { + plant_turbine_spacing = + node["plant_turbine_spacing"] ? node["plant_turbine_spacing"].as() : 0.; + plant_row_spacing = node["plant_row_spacing"] ? node["plant_row_spacing"].as() : 0.; + commissioning_pct = node["commissioning_pct"] ? node["commissioning_pct"].as() : 0.; + decommissioning_pct = + node["decommissioning_pct"] ? node["decommissioning_pct"].as() : 0.; + distance_to_substation = + node["distance_to_substation"] ? node["distance_to_substation"].as() : 0.; + distance_to_interconnection = node["distance_to_interconnection"] + ? node["distance_to_interconnection"].as() + : 0.; + distance_to_landfall = + node["distance_to_landfall"] ? node["distance_to_landfall"].as() : 0.; + distance_to_site = node["distance_to_site"] ? node["distance_to_site"].as() : 0.; + interconnect_voltage = + node["interconnect_voltage"] ? node["interconnect_voltage"].as() : 0.; + port_cost_per_month = + node["port_cost_per_month"] ? node["port_cost_per_month"].as() : 0.; + site_auction_price = + node["site_auction_price"] ? node["site_auction_price"].as() : 0.; + site_assessment_plan_cost = + node["site_assessment_plan_cost"] ? node["site_assessment_plan_cost"].as() : 0.; + site_assessment_cost = + node["site_assessment_cost"] ? node["site_assessment_cost"].as() : 0.; + construction_operations_plan_cost = + node["construction_operations_plan_cost"] + ? node["construction_operations_plan_cost"].as() + : 0.; + boem_review_cost = node["boem_review_cost"] ? node["boem_review_cost"].as() : 0.; + design_install_plan_cost = + node["design_install_plan_cost"] ? node["design_install_plan_cost"].as() : 0.; + } +}; + +// Costs +struct Costs { + double wake_loss_factor; // Factor to model losses in annual energy production in a wind farm + // compared to the annual energy production at the turbine level (wakes + // mostly). + double fixed_charge_rate; // Fixed charge rate to compute the levelized cost of energy. See this + // for inspiration https://www.nrel.gov/docs/fy20osti/74598.pdf + double bos_per_kw; // Balance of stations costs expressed in USD per kW. See this for + // inspiration https://www.nrel.gov/docs/fy20osti/74598.pdf + double opex_per_kw; // Operational expenditures expressed in USD per kW. See this for + // inspiration https://www.nrel.gov/docs/fy20osti/74598.pdf + int turbine_number; // Number of turbines in the park, used to compute levelized cost of energy. + // Often wind parks are assumed of 600 MW. See this for inspiration + // https://www.nrel.gov/docs/fy20osti/74598.pdf + double labor_rate; // Hourly loaded wage per worker including all benefits and overhead. This + // is currently only applied to steel, column structures. + double painting_rate; // Cost per unit area for finishing and surface treatments. This is + // currently only applied to steel, column structures. + double blade_mass_cost_coeff; // Regression-based blade cost/mass ratio + double hub_mass_cost_coeff; // Regression-based hub cost/mass ratio + double pitch_system_mass_cost_coeff; // Regression-based pitch system cost/mass ratio + double spinner_mass_cost_coeff; // Regression-based spinner cost/mass ratio + double lss_mass_cost_coeff; // Regression-based low speed shaft cost/mass ratio + double bearing_mass_cost_coeff; // Regression-based bearing cost/mass ratio + double gearbox_mass_cost_coeff; // Regression-based gearbox cost/mass ratio + double hss_mass_cost_coeff; // Regression-based high speed side cost/mass ratio + double generator_mass_cost_coeff; // Regression-based generator cost/mass ratio + double bedplate_mass_cost_coeff; // Regression-based bedplate cost/mass ratio + double yaw_mass_cost_coeff; // Regression-based yaw system cost/mass ratio + double converter_mass_cost_coeff; // Regression-based converter cost/mass ratio + double transformer_mass_cost_coeff; // Regression-based transformer cost/mass ratio + double hvac_mass_cost_coeff; // Regression-based HVAC system cost/mass ratio + double cover_mass_cost_coeff; // Regression-based nacelle cover cost/mass ratio + double elec_connec_machine_rating_cost_coeff; // Regression-based electrical plant connection + // cost/rating ratio + double platforms_mass_cost_coeff; // Regression-based nacelle platform cost/mass ratio + double tower_mass_cost_coeff; // Regression-based tower cost/mass ratio + double controls_machine_rating_cost_coeff; // Regression-based controller and sensor system + // cost/rating ratio + double crane_cost; // crane cost if present + double electricity_price; // Electricity price used to compute value in beyond lcoe metrics + double + reserve_margin_price; // Reserve margin price used to compute value in beyond lcoe metrics + double capacity_credit; // Capacity credit used to compute value in beyond lcoe metrics + double + benchmark_price; // Benchmark price used to nondimensionalize value in beyond lcoe metrics + + void parse(const YAML::Node& node) { + wake_loss_factor = node["wake_loss_factor"] ? node["wake_loss_factor"].as() : 0.; + fixed_charge_rate = node["fixed_charge_rate"] ? node["fixed_charge_rate"].as() : 0.; + bos_per_kw = node["bos_per_kw"] ? node["bos_per_kw"].as() : 0.; + opex_per_kw = node["opex_per_kw"] ? node["opex_per_kw"].as() : 0.; + turbine_number = node["turbine_number"] ? node["turbine_number"].as() : 0; + labor_rate = node["labor_rate"] ? node["labor_rate"].as() : 0.; + painting_rate = node["painting_rate"] ? node["painting_rate"].as() : 0.; + blade_mass_cost_coeff = + node["blade_mass_cost_coeff"] ? node["blade_mass_cost_coeff"].as() : 0.; + hub_mass_cost_coeff = + node["hub_mass_cost_coeff"] ? node["hub_mass_cost_coeff"].as() : 0.; + pitch_system_mass_cost_coeff = node["pitch_system_mass_cost_coeff"] + ? node["pitch_system_mass_cost_coeff"].as() + : 0.; + spinner_mass_cost_coeff = + node["spinner_mass_cost_coeff"] ? node["spinner_mass_cost_coeff"].as() : 0.; + lss_mass_cost_coeff = + node["lss_mass_cost_coeff"] ? node["lss_mass_cost_coeff"].as() : 0.; + bearing_mass_cost_coeff = + node["bearing_mass_cost_coeff"] ? node["bearing_mass_cost_coeff"].as() : 0.; + gearbox_mass_cost_coeff = + node["gearbox_mass_cost_coeff"] ? node["gearbox_mass_cost_coeff"].as() : 0.; + hss_mass_cost_coeff = + node["hss_mass_cost_coeff"] ? node["hss_mass_cost_coeff"].as() : 0.; + generator_mass_cost_coeff = + node["generator_mass_cost_coeff"] ? node["generator_mass_cost_coeff"].as() : 0.; + bedplate_mass_cost_coeff = + node["bedplate_mass_cost_coeff"] ? node["bedplate_mass_cost_coeff"].as() : 0.; + yaw_mass_cost_coeff = + node["yaw_mass_cost_coeff"] ? node["yaw_mass_cost_coeff"].as() : 0.; + converter_mass_cost_coeff = + node["converter_mass_cost_coeff"] ? node["converter_mass_cost_coeff"].as() : 0.; + transformer_mass_cost_coeff = node["transformer_mass_cost_coeff"] + ? node["transformer_mass_cost_coeff"].as() + : 0.; + hvac_mass_cost_coeff = + node["hvac_mass_cost_coeff"] ? node["hvac_mass_cost_coeff"].as() : 0.; + cover_mass_cost_coeff = + node["cover_mass_cost_coeff"] ? node["cover_mass_cost_coeff"].as() : 0.; + elec_connec_machine_rating_cost_coeff = + node["elec_connec_machine_rating_cost_coeff"] + ? node["elec_connec_machine_rating_cost_coeff"].as() + : 0.; + platforms_mass_cost_coeff = + node["platforms_mass_cost_coeff"] ? node["platforms_mass_cost_coeff"].as() : 0.; + tower_mass_cost_coeff = + node["tower_mass_cost_coeff"] ? node["tower_mass_cost_coeff"].as() : 0.; + controls_machine_rating_cost_coeff = + node["controls_machine_rating_cost_coeff"] + ? node["controls_machine_rating_cost_coeff"].as() + : 0.; + crane_cost = node["crane_cost"] ? node["crane_cost"].as() : 0.; + electricity_price = node["electricity_price"] ? node["electricity_price"].as() : 0.; + reserve_margin_price = + node["reserve_margin_price"] ? node["reserve_margin_price"].as() : 0.; + capacity_credit = node["capacity_credit"] ? node["capacity_credit"].as() : 0.; + benchmark_price = node["benchmark_price"] ? node["benchmark_price"].as() : 0.; + } +}; + +// Turbine +struct Turbine { + std::string comments; // Description of the model + std::string name; // Name of the turbine + Assembly assembly; + Components components; + std::vector airfoils; // Database of airfoils + std::vector materials; // Database of the materials + Control control; + Environment environment; + Bos bos; + Costs costs; + + void parse(const YAML::Node& node) { + comments = node["comments"] ? node["comments"].as() : ""; + name = node["name"] ? node["name"].as() : ""; + if (node["assembly"]) { + assembly.parse(node["assembly"]); + } + if (node["components"]) { + components.parse(node["components"]); + } + if (node["airfoils"]) { + for (const auto& item : node["airfoils"]) { + Airfoils x; + x.parse(item); + airfoils.push_back(x); + } + } + if (node["materials"]) { + for (const auto& item : node["materials"]) { + Materials x; + x.parse(item); + materials.push_back(x); + } + } + if (node["control"]) { + control.parse(node["control"]); + } + if (node["environment"]) { + environment.parse(node["environment"]); + } + if (node["bos"]) { + bos.parse(node["bos"]); + } + if (node["costs"]) { + costs.parse(node["costs"]); + } + } +}; diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt index 54954bf2..b79fe3ca 100644 --- a/tests/unit_tests/CMakeLists.txt +++ b/tests/unit_tests/CMakeLists.txt @@ -26,6 +26,7 @@ target_link_system_libraries( PRIVATE KokkosKernels::kokkoskernels Amesos2::amesos2 + yaml-cpp GTest::gtest GTest::gtest_main ) diff --git a/tests/unit_tests/restruct_poc/CMakeLists.txt b/tests/unit_tests/restruct_poc/CMakeLists.txt index 0edd9e7d..77532d4c 100644 --- a/tests/unit_tests/restruct_poc/CMakeLists.txt +++ b/tests/unit_tests/restruct_poc/CMakeLists.txt @@ -12,6 +12,7 @@ target_sources( test_math.cpp test_utilities.cpp test_controller.cpp + test_yaml_parser.cpp # Beams-related tests beams/test_interpolate_QP_state.cpp diff --git a/tests/unit_tests/restruct_poc/test_cantilever_beam.cpp b/tests/unit_tests/restruct_poc/test_cantilever_beam.cpp index 542524ae..9357b85d 100644 --- a/tests/unit_tests/restruct_poc/test_cantilever_beam.cpp +++ b/tests/unit_tests/restruct_poc/test_cantilever_beam.cpp @@ -23,14 +23,14 @@ template void WriteMatrixToFile(const std::vector>& data, const std::string& filename) { std::ofstream file(filename); if (!file.is_open()) { - std::cerr << "Unable to open file: " << filename << std::endl; + std::cerr << "Unable to open file: " << filename << "\n"; return; } for (const auto& innerVector : data) { for (const auto& element : innerVector) { file << element << ","; } - file << std::endl; + file << "\n"; } file.close(); } diff --git a/tests/unit_tests/restruct_poc/test_rotating_beam.cpp b/tests/unit_tests/restruct_poc/test_rotating_beam.cpp index 662d28f0..64a23ab6 100644 --- a/tests/unit_tests/restruct_poc/test_rotating_beam.cpp +++ b/tests/unit_tests/restruct_poc/test_rotating_beam.cpp @@ -29,14 +29,14 @@ template void WriteMatrixToFile(const std::vector>& data, const std::string& filename) { std::ofstream file(filename); if (!file.is_open()) { - std::cerr << "Unable to open file: " << filename << std::endl; + std::cerr << "Unable to open file: " << filename << "\n"; return; } for (const auto& innerVector : data) { for (const auto& element : innerVector) { file << element << ","; } - file << std::endl; + file << "\n"; } file.close(); } diff --git a/tests/unit_tests/restruct_poc/test_rotor.cpp b/tests/unit_tests/restruct_poc/test_rotor.cpp index efff059d..b1b83b60 100644 --- a/tests/unit_tests/restruct_poc/test_rotor.cpp +++ b/tests/unit_tests/restruct_poc/test_rotor.cpp @@ -32,7 +32,7 @@ template void WriteMatrixToFile(const std::vector>& data, const std::string& filename) { std::ofstream file(filename); if (!file.is_open()) { - std::cerr << "Unable to open file: " << filename << std::endl; + std::cerr << "Unable to open file: " << filename << "\n"; return; } file << std::setprecision(16); @@ -40,7 +40,7 @@ void WriteMatrixToFile(const std::vector>& data, const std::strin for (const auto& element : innerVector) { file << element << ","; } - file << std::endl; + file << "\n"; } file.close(); } @@ -520,11 +520,10 @@ TEST(RotorTest, IEA15RotorController) { // If flag set, write quadrature point glob position to file if (write_output) { - auto tmp = std::to_string(i + 1); - auto file_name = std::string("steps/step_") + std::string(4 - tmp.size(), '0') + tmp; - #ifdef OTURB_ENABLE_VTK // Write VTK output to file + auto tmp = std::to_string(i + 1); + auto file_name = std::string("steps/step_") + std::string(4 - tmp.size(), '0') + tmp; BeamsWriteVTK(beams, file_name + ".vtu"); #endif } diff --git a/tests/unit_tests/restruct_poc/test_yaml_parser.cpp b/tests/unit_tests/restruct_poc/test_yaml_parser.cpp new file mode 100644 index 00000000..992ac6fa --- /dev/null +++ b/tests/unit_tests/restruct_poc/test_yaml_parser.cpp @@ -0,0 +1,61 @@ +#include + +#include +#include + +#include "test_utilities.hpp" + +#include "src/utilities/scripts/windio_mapped_structs.hpp" + +namespace openturbine::restruct_poc::tests { + +/// Function to find the project root directory +static std::filesystem::path FindProjectRoot() { + std::filesystem::path currentPath = std::filesystem::current_path(); + + while (!currentPath.empty()) { + if (std::filesystem::exists(currentPath / "CMakeLists.txt")) { + return currentPath; + } + currentPath = currentPath.parent_path(); + } + + throw std::runtime_error("Could not find project root directory. CMakeLists.txt not found."); +} + +TEST(ParserTest, ParseIEA15MWBasicInfo) { + const std::filesystem::path projectRoot = FindProjectRoot(); + std::filesystem::path yamlPath = projectRoot / "src/utilities/scripts/IEA-15-240-RWT.yaml"; + const YAML::Node config = YAML::LoadFile(yamlPath.string()); + Turbine turbine; + turbine.parse(config); + ASSERT_EQ(turbine.name, "IEA 15MW Offshore Reference Turbine, with taped chord tip design"); +} + +TEST(ParserTest, ParseIEA15MWAssembly) { + const std::filesystem::path projectRoot = FindProjectRoot(); + std::filesystem::path yamlPath = projectRoot / "src/utilities/scripts/IEA-15-240-RWT.yaml"; + const YAML::Node config = YAML::LoadFile(yamlPath.string()); + Turbine turbine; + turbine.parse(config); + ASSERT_EQ(turbine.assembly.turbine_class, "I"); + ASSERT_EQ(turbine.assembly.turbulence_class, "B"); + ASSERT_EQ(turbine.assembly.drivetrain, "direct_drive"); + ASSERT_EQ(turbine.assembly.rotor_orientation, "Upwind"); + ASSERT_EQ(turbine.assembly.number_of_blades, 3); + ASSERT_EQ(turbine.assembly.hub_height, 150.); + ASSERT_EQ(turbine.assembly.rotor_diameter, 241.94); + ASSERT_EQ(turbine.assembly.rated_power, 15.e+6); + ASSERT_EQ(turbine.assembly.lifetime, 25.); +} + +TEST(ParserTest, ParseIEA15MWMaterials) { + const std::filesystem::path projectRoot = FindProjectRoot(); + std::filesystem::path yamlPath = projectRoot / "src/utilities/scripts/IEA-15-240-RWT.yaml"; + const YAML::Node config = YAML::LoadFile(yamlPath.string()); + Turbine turbine; + turbine.parse(config); + ASSERT_EQ(turbine.materials.size(), 11); +} + +} // namespace openturbine::restruct_poc::tests