我正在使用netlib的dvode ODE 求解器来求解一个僵硬的稀疏系统(应用程序是大气化学)。子程序的第一次调用完成了一组初始化任务,并将因变量的初始值数组作为输入。在随后的调用中,例程执行实际的积分,并且数组仅用作输出。dvode
y
y
由于各种原因,我需要y
在集成过程中修改依赖数组的一个元素。Asy
用作除第一次调用之外的所有输出,忽略dvode
对 的输入值的修改。y
相关数据似乎存储在工作区数组中。
有没有办法强制dvode
让我在集成期间更改依赖数组的值?我不想弄乱求解器的内部结构,如果可能的话,我想避免更改工作区数组,因为可能存在各种难以预见的依赖关系。我尝试在初始化和集成调用之间交替,但这会使事情变慢。
如果没有明确的解决方案,我还会考虑尝试另一个(与 Fortran 兼容的)求解器来解决僵硬、高度非线性的 ODE。