Есть класс, в нём есть куча коэффициентов для системы дифференциальных уравнений. Получается что-то невообразимое (см. ниже)
Как это нормально сделать? Массив тут не очень-то подходит, потому что всё равно тогда нужно будет сделать индексатор, который будет по именам коэффициентов работать (использование коэффициентов нужно именно по именам) — т.е. всё равно куча тупого кода получается.
Вот думаю, можно это как-то нормально сделать, что бы кода было поменьше?
public class Bar
{
public N1: Node; // Начальный узел
public N2: Node; // Конечный узел
public N3: Node; // Узел, указывающий направление оси y (точнее, лежащие в плоскости, перпендикулярной оси z)
public Lv : VinVector;
public L : double;
// Параметры поперечного сечения
public A : XmlIOsystem.CalclulatorFunction; // Площадь
public Iz : XmlIOsystem.CalclulatorFunction; // Момент инерции относительно оси Z
public Iy : XmlIOsystem.CalclulatorFunction; // Момент инерции относительно оси Y
public Zp : XmlIOsystem.CalclulatorFunction; // Максимальное расстояние по оси z до материала сечения от центра масс по направлению оси z (больше нуля)
public Zm : XmlIOsystem.CalclulatorFunction; // Максимальное расстояние по оси z до материала сечения от центра масс против направления оси z (больше нуля)
public Yp : XmlIOsystem.CalclulatorFunction; // Аналогично Zp, но по оси Y
public Ym : XmlIOsystem.CalclulatorFunction; // Аналогично Zm, но по оси Y
public E : XmlIOsystem.CalclulatorFunction; // Модуль Юнга
public G : XmlIOsystem.CalclulatorFunction; // Модуль сдвига
public aT : XmlIOsystem.CalclulatorFunction; // Коэффициент температурного расширения
// lF :
public lFx : XmlIOsystem.CalclulatorFunction; // Распределённая нагрузка по оси стержня
public lFy : XmlIOsystem.CalclulatorFunction; // -//- по локальной оси y
public lFz : XmlIOsystem.CalclulatorFunction; // -//- -//- z
public lMx : XmlIOsystem.CalclulatorFunction; // Распределённый крутящий момент
public lMy : XmlIOsystem.CalclulatorFunction; // Изгибающий помент (вокруг оси y)
public lMz : XmlIOsystem.CalclulatorFunction; // -//- (вокруг оси z)
public T0 : XmlIOsystem.CalclulatorFunction; // Температура на оси стержня
public tz : XmlIOsystem.CalclulatorFunction; // Коэффициент неравномерности температуры по оси z
public ty : XmlIOsystem.CalclulatorFunction; // Коэффициент неравномерности температуры по оси y
public this(
aA : XmlIOsystem.CalclulatorFunction,
aIz : XmlIOsystem.CalclulatorFunction,
aIy : XmlIOsystem.CalclulatorFunction,
aZp : XmlIOsystem.CalclulatorFunction,
aZm : XmlIOsystem.CalclulatorFunction,
aYp : XmlIOsystem.CalclulatorFunction,
aYm : XmlIOsystem.CalclulatorFunction,
aE : XmlIOsystem.CalclulatorFunction,
aG : XmlIOsystem.CalclulatorFunction,
aaT : XmlIOsystem.CalclulatorFunction,
alFx : XmlIOsystem.CalclulatorFunction,
alFy : XmlIOsystem.CalclulatorFunction,
alFz : XmlIOsystem.CalclulatorFunction,
alMx : XmlIOsystem.CalclulatorFunction,
alMy : XmlIOsystem.CalclulatorFunction,
alMz : XmlIOsystem.CalclulatorFunction,
aT0 : XmlIOsystem.CalclulatorFunction,
atz : XmlIOsystem.CalclulatorFunction,
aty : XmlIOsystem.CalclulatorFunction,
aN1: Node,
aN2: Node,
aN3: Node
)
{
N1 = aN1;
N2 = aN2;
N3 = aN3;
A = aA ;
Iz = aIz;
Iy = aIy;
Zp = aZp;
Zm = aZm;
Yp = aYp;
Ym = aYm;
E = aE ;
G = aG ;
aT = aaT;
lFx = alFx;
lFy = alFy;
lFz = alFz;
lMx = alMx;
lMy = alMy;
lMz = alMz;
T0 = aT0;
tz = atz;
ty = aty;
Lv = N2.Coordinate - N1.Coordinate;
L = Lv.norm();
}
}