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