Григорий Шмерлинг

Расчет поляры парусной яхты

демонстрационная программа

Что нового

Cборка 2, 9.10.2024

  1. Добавлена визуализация результатов расчета в виде поляр. При запусках основной программы sailing.exe создается файл graf.txt, в который записываются данные для построения графиков. Можно выполнить прогон sailing.exe c 1-4 вариантами исходных данных, затем вызвать polar.exe и получить вид поляр.
  2. При загрузке поляр паруса и шверта производится линейная интерполяция данных; интервал между соседними точками делится на 5 частей. таким образом, например, для поляры шверта с точками через 1° для последующих расчетров получается интервал 0,2°.
  3. Несколько изменена процедура расчета, что вместе с п. 2 позволило улучшить стабильность и сходимость.
  4. Уточнены данные по применяемой как образец поляре паруса (см. ниже).

Описание

Скачайте архив, который содержит следующие файлы:

sailing.exe 13824 - исполняемый файл,
SmallBasicLibrary 265471 - библитека из дистрибутива SmallBasic,
sailing.sb 13407 - исходный текст,
polar.exe 7680 - программа для вывода поляр в графическом виде,
polar.sb 4282 - ее исходный текст,
sail.txt - данные поляры паруса,
sail.tx1 - исходные данные поляры паруса (см. ниже),
board.txt - данные поляры шверта,
corp_r.txt - данные буксировочного сопротивления
data.txt - исходные данные для расчета.

Для запуска программы все файлы (кроме исходного текста) должны находиться в одной папке; для работы с исходным текстом установите Microsoft SmallBasic. Все это - только для Windows. Результаты выводятся на экран и в файл output.txt; если его не удалять и не переносить, при следующих запусках новые результаты добавляются в конец.

Cостав выходных данных:

  1. Ветер - угол истинного / угол вымпельного, скорость вымпельного.
  2. Угол атаки паруса (расчетный оптимальный).
  3. Скорость лодки по курсу / ее проекция на направление истинного ветра.
  4. Скорость дрейфа.

Лицензия, о как

Свободная CC. Короче, флаг в руки. Может, найдется человек сведущий в парусных делах и в программировании, и сделает что-то более полезное и удобное. Хотел было сделать на сайте "калькулятор поляры", но с Java Script не справился.

Применение

С данными из архива расчет сходится, но шаг вправо-влево... и никаких гарантий. Это же демонстрационная программа, в конце концов. Но надежда есть: раз лодка способна двигаться при некотором ветре под некоторым углом к нему с определенной скоростью, почему бы и расчету не сойтись?

Вопрос в том, насколько адекватно описывают судно данные, которые будут загружены, и в какой степени мешают отражению реальности разные упрощения, а то и не пойманные алгоритмические ошибки.

Конечно, эксперименты с точностью до тенденций возможны, иначе было бы неинтересно.

Исходные данные

Общее важное замечание

Все данные заносятся в текстовые файлы и считываются из них при запуске. Поскольку файлы читаются построчно, нельзя менять количество и положение строк. Можно менять только числа, при этом десятичный разделитель - только точка.

Поляра паруса - sail.txt

Каждая тройка строк содержит:
- угол атаки паруса в градусах,
- коэфф. лобового сопротивления Сх,
- коэфф. подъемной силы Сy.

Данные сняты с рисунка, приведенного в книге Ч.Мархая (стр. 100) для паруса с удлинением 5 и пузом 10%..

Необходимо отметить, что получаемые результаты сильно зависят от "разумности" оцифровки поляры паруса. Для приведенной поляры были сделаны два файла. В файле sail.tx1 записаны данные для точек, указанных на графике. Поскольку интерполяция между ними линейная, область максимума около 15° для расчета превращается в острый пик, а на получаемой поляре яхты имеются заметные изломы, по-видимому являющиеся артефактом такой оцифровки и расчета.

Для файла sail.txt были убраны данные для углов 60 и 80°, где график близок к линейному, да и область таких углов атаки вблизи фордевинда не слишком интересна. Вместо этого добавлены точки 14 и 16° в области максимума и резкого перегиба.

Общее число точек должно быть неизменным - 12, но расположить их можно при любых углах атаки. Там, где интервал между точками всего 1°, интерполяция поделит его на те же 5 частей, и интервал для расчета будет 0,2°.

Для этого файла поляра получается более гладкой, а скорости в области максимума тяги заметно больше.

Поляра шверта (киля) - board.txt

Каждая тройка строк содержит:
- угол атаки шверта в градусах,
- коэфф. сопротивления Сх,
- коэфф. боковой силы Сy.

Данные сняты с показанной справа картинки, взятой с Barque.ru. Здесь самая благополучная ситуация, так как данные по профилям и пластинам можно найти и они наиболее надежны.

Буксировочное сопротивление - corp_r.txt

Пары строк содержат:
- скорость в м/с,
- силу в кГ.

По-хорошему, надо бы иметь семейство буксировочных кривых для различных углов между ДП судна и направлением движения, что позволило бы правильно моделировать движение с дрейфом. Но где ж их взять... Расчет буксировочного сопротивления - целая наука, и не самая простая. Используйте любые данные, какие сможете получить; примененный простой подход позволяет, во всяком случае, опереться на опытные данные.

В расчете применяется интерполяция, зависимость сопротивления от скорости между соседними точками считается квадратичной.

Дрейф учитывается всего по одной точке: силе и скорости при "буксировке" лагом. Зависимость считается квадратичной, числа в файле условные, но такое измерение хотя бы можно при желании провести.

Данные для расчета - data.txt

Тут все понятно:
Данные для расчета. Не меняйте положение строк, данные считываются по их номерам.
Площадь паруса, кв.м
10
Эквив. доп. парусность (корпус и пр.) в пересчете на Сх=1, кв.м
1
Скорость истинного ветра, м/с
7
Площадь шверта, кв.м
0.3

Примечание одно: "эквив. доп. парусность", она же паразитная - все что обдувает ветер, кроме создающего тягу паруса. Понятно, что борта, надстройка, рангоут и люди на палубе имеют разные аэродинамические коэффициенты сопротивления, да еще и зависящие от угла атаки, но считаем все вместе как стоящую поперек ветра стенку с Сх=1,0. Оцените на выпуклый морской глаз, насколько все хозяйство обтекается лучше стенки, и соответственно уменьшите площадь: например, при Cx=0.5 вместо 2 кв.м укажите 1.

Можно учесть и разницу в скоростях ветра на разных высотах, что, наверное, существенно, ведь зависимость аэродинамических сил от скорости ветра квадратичная.

Как считаем

Если одной фразой - методом последовательных приближений.

Вымпельный ветер и скорость лодки

С помощью приведенных в книге Дж.Норвуда (гл. 1) соотношений определяются угол и скорость вымпельного ветра. Теперь можно рассчитать силу тяги, которую развивает парус, а по буксировочной кривой посмотреть, какая скорость лодки соответствует этой тяге. Поскольку начальная скорость берется с потолка (как доля скорости ветра), они будут различаться.

Изменим начальную скорость так, чтобы она была ближе к расчетной, и будем повторять цикл расчета до тех пор, пока силы тяги и сопротивления не окажутся близки.

Выбор угла атаки для паруса

Программа повторяет расчет скорости для ряда приведенных в данных о поляре углов атаки и останавливается на таком, при котором скорость лодки максимальна.

Дрейф

Касающийся дрейфа цикл расчетов входит в цикл определения скорости лодки. Сила дрейфа известна, она определена вместе с силой тяги. Для текущей скорости выбирается угол атаки шверта (он же угол дрейфа), при котором силы бокового сопротивления шверта и корпуса уравновешивают силу дрейфа.

Учитывается вклад сопротивления шверта в буксировочное сопротивление для расчета скорости по курсу, а также увеличение углов ветра на угол дрейфа лодки.

Вот, собственно, и все. Все детали см. в исходном тексте; при желании можно выводить различные промежуточные данные, оставлены (закомментированы) несколько таких команд, использованных при отладке.