问题标签 [sundials]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - 安装 assimulo 和日晷 - 错误
我想使用 Assimulo 和 Sundials 来解决 Python 中的微分代数方程,因此我试图将它安装在 Ubuntu 上。
对于日晷的安装,我按照安装说明进行操作,据我了解它运行良好。
然后我尝试使用命令安装 Assimulo pip3 install Assimulo
,但我收到一条错误消息。我还尝试按照安装 - Assimulo 3.0 文档中的说明下载安装文件并使用以下命令进行安装。它会导致相同的错误消息。
这是我收到的错误消息:
出了什么问题,我该如何解决?任何帮助,将不胜感激!
python - How to fix ‘IDASolve : the corrector convergence failed’ when solving a DAE with scikits.odes and Sundial?
I'm trying to solve a system of DAE (2 ODE and 1 algebraic equation) using the solver IDA from Sundials (https://computation.llnl.gov/projects/sundials/ida), through the Python package scikits.odes (https://scikits-odes.readthedocs.io).
I'm using scikits.odes 2.4.0, Sundials 3.1.1 and Python 3.6 64bit.
Here is the code :
When I run it, I get the following error :
Do you have any idea of from where it could come from?
julia - 罕见的,看似随机的分段错误和只读内存错误:为什么?我该如何解决?
我正在尝试使用 sundials.jl 解决 julia 中的 DAE 系统。原始代码工作正常,但用于不确定性量化的蒙特卡罗模拟有时会导致分段错误。
我通过修改 julia 文档中的 dae 示例来创建上面的玩具示例以显示问题,但是玩具中的错误发生率低于实际代码中的错误发生率(尽管仍然会发生)。
感谢任何人的帮助!
matrix - Python:如何用雅可比行有效地解决 DAE?
我正在尝试使用 Assimulo 包来求解一组微分代数方程 (DAE)。我正在尝试使用类似于此处显示的算法。但是,似乎没有传递稀疏矩阵的选项。我的雅可比矩阵非常大,大约 3000 x 3000。你知道是否有一种方法可以更有效地解决我的 DAE 问题吗?
c - 使用 Cython 以 void 指针作为参数包装 C 函数
我正在学习用 cython 包装的 C 库。我使用 cython 编译了几个简单的 C 函数和头文件,现在尝试运行另一个示例,该示例比以前的示例更复杂。
我下载了 Sundials C 源代码的第一个版本(仅限 IDA 模块)并使用 VS 2019 制作了一个 *.lib。现在我试图只包装一个函数来看看它是如何工作的。但是我不知道如何正确地将带有 void * 参数的函数包装到 cython 函数。这是示例。
是指向 C函数ida_mem
分配的内存地址的 void 指针。malloc
我应该如何IDACalcIC
使用正确的指针参数调用底部的函数?
IDA.pyx 文件
cmake - 未定义的符号仍然存在,但共享库可以编译并且似乎可以正常运行
我的目标是从SUNDIALS 2.7.0构建共享库- 这些是用 C 编写的常微分方程的求解器。
我已经下载了源代码,并按照安装指南进行操作:
- 运行 Cmake(带 GUI),检查选项“CVODE” (这是可用的求解器之一 - 我想要的唯一一个),“构建共享库”和“使用通用(std-c)数学库”并生成 Makefile。
- 在 Linux 控制台中运行
make && make install
并生成我的共享库,完全没有错误消息。这是输出:
这些共享库似乎在我的项目中正常运行,为此我需要它们 - 常微分方程正在得到求解,并且输出似乎与独立于这些的其他求解器相同。
但是有一个很大的但是:):检查生成的共享库中的未定义符号向我展示了标准函数的简短列表 - 这是共享库的输出:
和
打印共享库依赖项给出:
和
例如,像SUNRsqrt这样的函数是在sqrt上定义的,并且在实际数值计算中非常重要——这一事实以及未定义符号的存在让我感到困惑和担心共享库的可靠性。
在生成共享库之前,我已经为环境变量 LD_LIBRARY_PATH 设置了所有适当的路径(顺便说一下,它之前是空的):
例如,C 标准库libc.so和 C 数学库libm.so存储在/usr/lib/x86_64-linux-gnu,而 GNU 事务内存库libitim.so存储在/usr/lib/gcc /x86_64-linux-gnu(虽然它的 1.0.0 版本也在/usr/lib/x86_64-linux-gnu)。
操作系统、Cmake、GNU C 编译器和 GNU Make 的版本:
任何评论将不胜感激。
PS 这个案例是完全可重现的,因为它是关于从 SUNDIALS 2.7.0 源(直接下载链接)生成共享库并在未定义的符号上检查它们。
c - 编写一个文本文件以在 C 程序中保存向量和其他变量
我正在使用日晷数值求解器来求解 DAE 方程。我能够创建一个工作代码,但我不确定有效保存解决方案向量的最佳方法是什么。下面是求解方程并使用for
循环将解保存在文本文件中的代码片段。
有没有其他方法可以在没有内部“for”循环的情况下将向量 uu 保存在文本文件(或其他有效格式)中?
python - 如何在 Python 中执行伴随敏感性(最好通过 CVODE)
我想在 python 中实现伴随灵敏度分析,以确定我的目标函数相对于某些参数的梯度。具体来说,目标函数取决于微分方程的解,而微分方程的解又取决于我正在寻找的最优参数。
要执行此操作,Julia 中有许多好的包(请参见此处)以及 SUNDIALS 的 CVODES,但是后者显然具有为 python 制作的包装器,不包括根据此链接的敏感性分析功能。此外,我已经研究过 SALib进行敏感性分析,但据我了解,这指的是其他类型的“敏感性分析”,因此不包括伴随甚至前向敏感性分析(如果我错了,请纠正我) .
因此,我的问题是,python 中是否存在具有敏感性分析功能的 CVODES 版本,或者是否有任何其他软件包可以用来执行伴随敏感性分析?
c - CMake 构建可执行文件时未定义和重复的符号。Fortran77 C 混合
我有一个 fortran 90 程序,它通过 FCVODE 接口调用 Sundials CVODE。日晷是用 C 语言编写的,但它们为 fortran 提供了两个接口。一个接口用于 fortran 77 应用程序,一个使用现代 fortran 方法 (iso_c_binding)。
我的代码使用 fortran 77 接口(就像它最终的结果一样,我知道 iso_c_binding 会更好)
这是我的项目(开发分支):https ://github.com/Nicholaswogan/PhotochemPy/tree/dev
我的目标是编写一个 CMakesLists.txt,它可以一口气编译所有的 fortran 和 C。我已经这样做了,但它只适用于某些编译器组合和操作系统。例如,在带有 clang 12.0.5 和 gfortran 11.1.0 的 MacOS 上,一切正常。但是,在 MacOS 上,当我切换到 gcc 11.1.0(而不是 clang)时,链接我的可执行文件时出现错误:
我看过libsundials_fcvode.a
and libsundials_fcvode.a
,它们确实包含这些重复的符号。然而,当我用 clang + gfortran 编译时,这些库也有这些重复的符号,但是,在这种情况下,这些编译器似乎并没有被它打扰。
此外,在带有 gcc 9 和 gfortran 9 的 Ubuntu 20.04 上,我得到一个未定义的符号:
这个丢失的符号非常令人费解,因为它没有丢失!我习惯于nm
询问我要链接到的库,并且符号在那里:
我的问题:CMakesList.txt 中缺少哪些常见项目会导致这些问题?或者在没有iso_c_binding
.
编辑:
我最终花时间从 fortran 77 接口切换到使用 iso_c_binding 的现代 fortran C 接口。我尝试过的每个编译器都有效。