solve! with type_initial_gamma_distribution = ELLIPTIC throws ArgumentError("Multiple wings not yet implemented") on a BodyAerodynamics with more than one wing. That blocks linearize on a multi-wing body with that solver setting too, now that #355 lets linearize take several wings.
The guard is in calculate_circulation_distribution_elliptical_wing (src/body_aerodynamics.jl). It builds one ellipse gamma_0 * sqrt(1 - (2y / span)^2) over every panel, using wings[1].span and each control point's absolute y. For a second wing that is not centred on y = 0, or whose span direction is not y, that is not an elliptic distribution over that wing.
What I would do: loop over the wings the way calc_forces! already does, with a running panel offset. For each wing, take its panels' control points along that wing's spanwise_direction, measured from the wing's own mid-span, and write an ellipse over wing.span into that wing's slice of gamma_i. On one wing centred on y = 0 with span along y, this gives the same numbers as today.
Test: a two-wing body whose second wing is shifted in y. Each wing's initial gamma should equal the one-wing ellipse of that wing on its own, and solve! with ELLIPTIC should converge to the same gamma as with ZEROS.
solve!withtype_initial_gamma_distribution = ELLIPTICthrowsArgumentError("Multiple wings not yet implemented")on aBodyAerodynamicswith more than one wing. That blockslinearizeon a multi-wing body with that solver setting too, now that #355 letslinearizetake several wings.The guard is in
calculate_circulation_distribution_elliptical_wing(src/body_aerodynamics.jl). It builds one ellipsegamma_0 * sqrt(1 - (2y / span)^2)over every panel, usingwings[1].spanand each control point's absolute y. For a second wing that is not centred on y = 0, or whose span direction is not y, that is not an elliptic distribution over that wing.What I would do: loop over the wings the way
calc_forces!already does, with a running panel offset. For each wing, take its panels' control points along that wing'sspanwise_direction, measured from the wing's own mid-span, and write an ellipse overwing.spaninto that wing's slice ofgamma_i. On one wing centred on y = 0 with span along y, this gives the same numbers as today.Test: a two-wing body whose second wing is shifted in y. Each wing's initial gamma should equal the one-wing ellipse of that wing on its own, and
solve!withELLIPTICshould converge to the same gamma as withZEROS.