У меня есть система ODE, которую я решаю с помощью функции scipy solve_ivp ().Это работает хорошо, но у меня возникают проблемы с доступом к временному шагу, используемому на каждом шаге.Я знаю, что solve_ivp () передает текущее время пользовательской функции, но мне нужен используемый шаг по времени, а не текущее время.Для решения этой проблемы в настоящее время я устанавливаю параметры solve_ivp () min_step и max_step как
min_step = max_step = my_time_step
, поэтому я знаю шаг по времени.Но наверняка есть лучший способ сделать это?Я не вижу никакого способа в документах solve_ivp (), который позволил бы мне получить доступ к временному шагу для данного шага.Является ли приведенное выше решение лучшим способом или я пропустил более простое решение?
Дополнительная информация:
Я использую solve_ivp () для расчета эволюции металлашарик, как он движется по воздуху.Состав воздуха, радиус шарика и скорость шарика изменяются со временем.Металлический шарик окисляется воздухом со скоростью
rate=k[air] #rate has units of [mol m-3 s-1]
для константы скорости k и молярности воздуха [воздух], которая имеет единицы моль м-3.Объем встречаемого воздуха в секунду определяется как
vol_s = pi*radius**2*velocity #vol_s has units [m3 s-1]
Где радиус - это радиус шарика (м), а скорость - это скорость шарика (м с-1).Чтобы получить общее количество воздуха, реагирующего с бусинкой, мне нужно знать объем.Vol_s * time_step дает объем, так что rate * vol_s * time_step - это количество продукта реакции в секунду.Таким образом, необходимо знать time_step.