Сообщения

Изменения в версии 7.21

Изменения в версии 7.21

от Ринат Хабибуллин -
Number of replies: 0

В ходе проработки упражнений по расчету трубы и трубопровода полезли логические баги при вызове методов расчета. Они связаны с попыткой сделать функцию расчета максимально унифицированной - чтобы всего одной функцией расчета давления можно было охватить все интересные варианты и желательно при этом не запутаться. Дилема такая - хочется проводить расчет, например для НКТ в скважине, и снизу вверх (по забойному давлению искать устьевое)  и сверху вниз (по буферному искать забойное) в одной функции, а не в двух отдельных. Это можно решить специальной переменной - флагом  направления. Но одного флага не достаточно -  хорошо бы еще иметь возможность регулировать направление потока относительно координат.  Раньше я думал обойтись без второго флага (хотя бы для простой трубы) спрятав его в угол наклона относительно горизонта.  Но вылезло несколько неприятностей 

  1. название переменной для флага направления расчета оказалось неверным (calc_along_flow вместо calc_along_coord, что было бы логичнее), 
  2. при расчете нагнетания воды в скважину параметры оказались перепутаны (но это не точно), 
  3. при расчете трубопровода (сегментированной трубы) использована другая логика с двумя флагами. 
В итого я сам быстро запутался где что надо задавать, когда попытался использовать эти функции после некоторого перерыва.

Это побудило меня внести изменения в параметры функций расчета трубы. Заодно, если уж что то менять можно внести и другие новшества, которые я откладывал не желая менять сигнатуру вызова. Одна из старых проблем связана с количеством переменных, которые можно использовать в пользовательских функциях. Точнее даже не с количеством переменных, а общей длинной названий всех переменных - если она окажется слишком большой, то в интерфейсе excel перестанут отображаться подсказки. Это приводит к тому, что для сложных функций (скважины) приходится отказываться от некоторых переменных. И здесь я вместо двух переменных для калибровки оставил одну, но в которую можно передавать несколько значений. Другая проблема связана с тем, что некоторые параметры расчета добавлялись в ходе доработки и оказались оторваны от себе подобных. При добавлении новых параметров лучше их делать опциональными и добавлять в конец - тогда не разрушатся старые вызовы.

 Исходя из этого изменения такие:

  1. Для трубы и трубопровода (многосегментной трубы) вводится единый механизм задания режима расчета. Используется одна переменная calc_flow_direction, которая может принимать 4 значения

    ' calc_flow_direction - направление расчета и потока
    '                   относительно координат
    '                   если = 11 расчет и поток по координате
    '                   если = 10 расчет по, поток против координат
    '                   если = 00 расчет и поток против координате
    '                   если = 01 расчет против, поток по координате
  2. Калибровка задается одним параметром c_calibr, которая может принимать одно или два значения, числом, массивом или объектом range. Если будет передано одно число - это будет калибровка по гравитационной составляющей, если два то трение будет также учитываться.
  3. Последовательность параметров изменена. Предпринята попытка сгруппировать параметры по логическим группам. При этом некоторые параметры, которые ранее были опциональны -теперь обязательны, например диаметры.
  4. Для трубопровода (MF_p_pipeline) отлажена схема, когда глубины, диаметры и температуру можно задавать различными методами - числом, массивом или объектом range

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