Гамильтонов механический физический двигатель

Я пытаюсь реализовать физический движок, основанный на гамильтоновой механике.
Столкнувшись с несколькими проблемами, такими как

  1. Дифференцировать функцию H
  2. Частично оценить частную производную H-функции для эффективного использования метода Рунге-Кутты

Я решил представить функции как struct (Частичная оценка функции, представленной в виде структуры).

Однако объединение кода шаблонов C ++ со стандартным кодом C ++ оказывается затруднительным. Более того, оценка struct-функции, по-видимому, занимает как минимум в 2 раза больше времени, чем соответствующая стандартная функция.

Поэтому я спрашиваю сообщество Stackoverflow, должен ли я сохранить свой подход или изменить его.

РЕДАКТИРОВАТЬ

Я использую g ++ и компилирую из командной строки:

g ++ -std = c ++ 14 -IC: \ Hudba \ include Stin.cpp Tma.cpp -LC: \ Hudba \ lib -lglfw3 -lglew32 -lglu32 -lopengl32 -lkernel32 -luser32 -lgdi32 -lws2_32.

Чтобы частично оценить struct-функцию, мне нужно передать ей массив значений, которые не известны во время компиляции, что невозможно при использовании шаблонов.

0

Решение

Задача ещё не решена.

Другие решения