Calculating camber line...
Camber error: 0.034154810302669626
Camber error: 0.3962466375815222
Camber error: 0.30391320751990486
Camber error: 0.2506046916058189
/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/airfoil.py:531: RuntimeWarning: divide by zero encountered in double_scalars
s2 = s1-d1*(s0-s1)/(d0-d1)
Camber error: nan
Leading edge: [ 0.05187966 -0.03781971]
Trailing edge: [1. 0.]
Traceback (most recent call last):
File "my_airfoil_generator.py", line 21, in <module>
airfoil = adb.Airfoil("MMXX1500cTE4", airfoil_input, verbose=True)
File "/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/airfoil.py", line 44, in __init__
self._initialize_geometry()
File "/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/airfoil.py", line 192, in _initialize_geometry
self._calc_geometry_from_points()
File "/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/airfoil.py", line 430, in _calc_geometry_from_points
self._camber_line = interp.UnivariateSpline(camber_points[:,0], camber_points[:,1], k=5, s=1e-10)
File "/home/marco/anaconda3/lib/python3.7/site-packages/scipy/interpolate/fitpack2.py", line 173, in __init__
check_finite)
File "/home/marco/anaconda3/lib/python3.7/site-packages/scipy/interpolate/fitpack2.py", line 197, in validate_input
raise ValueError("x must be increasing if s > 0")
ValueError: x must be increasing if s > 0
“geometry” : dict, optional
Describes the geometry of the airfoil.
<snip>
The trailing edge should be sealed and points should be listed starting at the trailing edge.Database generation complete.
Convergent results obtained from Xfoil for 97.17% of the design space.
Generating Polynomial Fits for airfoil MMXX1500cTE4
Performing CL curve fit
Determining the orthogonal p functions ---------- 0.000% ETR = -:--:--.------/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/poly_fits.py:759: RuntimeWarning: invalid value encountered in double_scalars
gamma = np.dot(pj, temp) / np.dot(pj, pj)
Determining the orthogonal p functions ΞΞΞΞΞΞΞΞΞΞ 100.000% Run Time 0:36:35.097180
/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/poly_fits.py:771: RuntimeWarning: invalid value encountered in double_scalars
ajhat = np.dot(pj, y) / pjdot
Sorting the p functions by effectivenss ΞΞΞΞΞΞΞΞΞΞ 100.000% Run Time 0:01:48.960899
Determining number of p functions to use ---------- 0.000% ETR = -:--:--.------Traceback (most recent call last):
File "MMXX1500cTE4_generate_foildb.py", line 89, in <module>
airfoil.generate_polynomial_fit(CL_degrees="auto", CD_degrees="auto", Cm_degrees="auto", max_order=6)
File "/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/airfoil.py", line 2310, in generate_polynomial_fit
self._CL_poly_coefs, self._CL_degrees, self._CLfit_R2 = autoPolyFit(self._data[:,:self._num_dofs], self._data[:, self._num_dofs], **CL_kwargs)
File "/home/marco/anaconda3/lib/python3.7/site-packages/airfoil_db/poly_fits.py", line 790, in autoPolyFit
ahat = np.matmul(np.matmul(np.linalg.inv(np.matmul(Phat.transpose(), Phat)), Phat.transpose()), y)
File "<__array_function__ internals>", line 6, in inv
File "/home/marco/anaconda3/lib/python3.7/site-packages/numpy/linalg/linalg.py", line 546, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
File "/home/marco/anaconda3/lib/python3.7/site-packages/numpy/linalg/linalg.py", line 88, in _raise_linalgerror_singular
raise LinAlgError("Singular matrix")
numpy.linalg.LinAlgError: Singular matrix
2. I implemented (1) and got an error that came from "trailing_flap_deflection", "trailing_flap_fraction", and "Mach" all being identically zero at every point in the database. I looked at your database generator scripts and you've incorrectly specified those degrees of freedom. If you want a degree of freedom to be a constant value, you replace the dictionary with just a single float (see line 48 of MUXF/MMXX50spanTE4_generate_foildb.py). Otherwise, AirfoilDatabase will think it's a degree of freedom when it's really not, since it's a constant. I'll work on clarifying that in the docs.
I've heard that weight shift becomes problematic when span becomes large (the reason that current hangliders are about at their maximum span) and I did not want the pilot to be hanging as far underneath the wing as hangliders do.Because I use the bell shaped liftdistribution, there is a point near 93%span that always needs to stay at an AoA of zero (with a symetric airfoil).I'll have a speed/CL lever (similar to setting the flaps on a normal plane) that sets the AoA of the 0to40%span section, while keeping that zero-AoA-rib at zero.So to get full controll I'll then only have to tie the 80%span rib to the steering wheel to simultaneously set the 2 linear twists of the 40-80%span and 80-100%span sections.Resulting in full controll while maintaining the sin^3 lift over the whole speed range. Atleast... thats the idea, but I dont have a education in this field, so maybe i'm just thinking bonkers.So, a spratt controllwing (nobody does that), variable wingtwist (nobody does that), BSLD (nobody does that), footlaunching (almost nobody does that), prone pilot with a 'backpack' wing (well you get the idea).... I'm probably setting myself up for a short flight to death :-)
Hi ZachI for sure wish to build one for myself, and am aiming to best an ATOS rigid wing.If I succeed in both I was dreaming to start a tiny company and sell them.So a request to Cory,..plz keep all data under tight lock with a stamp of 'top secret', I'd hate to see a Chinese version before I got mine ready.and for Zach,..as you say you have no intention of building one, then I don't mind showing you the design secrets and especially not if I can benefit from the knowledge of a real airplane designer!Are you also studying the Spratt controllwing principle, or are you looking at this idea from a fixed wing perspective?Can one still speak of an aileron/elevon when the whole wing is used as a control area?The data that Cory has was my first guestimate for the chordlengths and today I am working on a new chord distribution that should fit the sin^3 even better.You describe the mechanism correct.The 0-40%semispan section will be rigid and it's AoA is set by the speed/CL lever, the pilot sets this appropriately for the next flight segment and can then use both hands on the controllwheel.Push/Pull the controllwheel will twist both left and right wing 80%semispan ribs up or down to dial in the whole sin^3 distribution (and can also be used to temporarily give more or less lift for short duration glide angle control). The rest of the ribs in the 40-80% section will follow the lead of the 80%rib and that section will thus take on a certain linear twist towards the center 0-40% section.Turning the wheel gives roll control by twisting the left wing 80%rib up while the right wing one goes down the same amount (and again the rest of the 40-80% section ribs follow). The mechanism I have in mind would be adaptable to do differential If it turns out that would be needed.The 80-100%semispan section will work similar, keeping the 93%rib at zero twist and having that section's TE spar follow the 80%rib will give me another linear twist in that section and indeed gives negative twist (washin) in the 93 to 100% part. However It should not give negative lift as washin amount is less than the glide angle.