SUNDIALS库的编译和使用

2023-05-16

SUNDIALS库的编译和使用

1.简介

SUNDIALS (SUite of Nonlinear and DIfferential/ALgebraic equation Solvers)是由美国劳伦斯利福摩尔国立实验室(Lawrence Livermore National Laboratory)开发的C语言函数库,主要用于求解大规模非线性微分/代数方程。最新的2.6.x(2015.9.9.)包括以下求解器:
CVODE solves initial value problems for ordinary differential equation (ODE) systems.
CVODES solves ODE systems and includes sensitivity analysis capabilities (forward and adjoint).
ARKODE solves initial value ODE problems with additive Runge-Kutta methods, include support for IMEX methods.
IDA solves initial value problems for differential-algebraic equation (DAE) systems.
IDAS solves DAE systems and includes sensitivity analysis capabilities (forward and adjoint).
KINSOL solves nonlinear algebraic systems.
In addition, SUNDIALS provides a Matlab interface to CVODES, IDAS, and KINSOL, sundialsTB.
其中主要的求解器经过了数十年的不断开发和完善,如下图所示:
在这里插入图片描述
本质上,SUNDIALS将之前开发的FORTRAN函数包进行C翻译而不是C++翻译。根据说明,这种做法有以下几点理由:
First, a general movement away from Fortran and toward C in scientific computing is apparent.
Second, the pointer, structure, and dynamic memory allocation features in C are extremely useful in software of this complexity, with the great variety of method options offered.
Finally, we prefer C over C++ for kinsol because of the wider availability of C compilers, the potentially greater efficiency of C, and the greater ease of interfacing the solver to applications written in Fortran.
SUNDIALS还提供了可选择的并行计算能力。

2.编译

2.1 准备

  1. Visual Studio
  2. SUNDIALS 官网地址
  3. CMake 官网地址
    CMAKE安装:
    安装步骤:
    step 1:
    在这里插入图片描述
    step 2:
    在这里插入图片描述
    step 3:
    在这里插入图片描述
    step 4:
    在这里插入图片描述

2.2 Cmake编译SUNDIALS-X.X.X

(此处我选择编译SUNDIALS-5.5.0)

2.2.1 建立工作目录

在C盘根目录建立如下路径:
在这里插入图片描述
即建立C:\sundials路径,并在其中分别建立三个文件夹:sundials-2.5.0-src、sundials-2.5.0-build、sundials-2.5.0-install。其中,sundials-2.5.0-src用于存放SUNDIALS解压缩文件;sundials-2.5.0-build存放之后Cmake编译成功生成的VS工程项目文件;sundials-2.5.0-install存放VS编译生成的函数库文件。

2.2.2 Cmake编译

打开CMake软件:

在"Where is the source code:“右边"Browse Source…“单击浏览到上面建立的sundials-X.X.X-src文件夹;在"Where to build the binaries:” 右边"Browse Build…“单击浏览到上面建立的sundials-X.X.X-build文件夹。如图:
在这里插入图片描述
选择"Visual Studio 12 2013 Win64”,选取"Use default native compilers”,单击"Finish",返回Cmake主界面,等待配置完成:
【意外情况1:】在日志中查看错误如下:
The system is: Windows - 10.0.18362 - AMD64
AMD64即x64,是一种64位元的电脑处理器架构。它是基于现有32位元的x86架构,由AMD公司所开发。
【解决方案1:】
错误原因是因为cmake使用的编译器问题,在选择Visual Studio 14 2015 Win64后,没有报错。
在这里插入图片描述
配置完成后,界面如下:通知框中出现"Configuring done"字样。
在这里插入图片描述
其中,红色表示需要确认的选择,例如是不是配置BUILD_CVODE这一项,打钩表示有选择意向,要再次单击"Configure"才能配置。在后面所讲的配置完成后,多次单击"Configure",直到所有红色消除,表示配置完成。
找到"CMAKE_INSTALL_PREFIX"一项,将其路径改为上面建立的sundials-X.X.X-install文件夹路径,即
在这里插入图片描述

找到"BUILD_SHARED_LIBS",勾选上;找到"BUILD_STATIC_LIBS",取消勾选。这一操作,将输出动态链接库(SHARED_LIBS,.dll和其对应的.lib);而默认是只输出静态库(STATIC_LIBS,.lib)。笔者选择动态链接库,主要考虑以后可能需要和其他语言混合编程,如C#等,实现SUNDIALS库计算,其他语言做GUI和图形化。
在这里插入图片描述

找到"EXAMPLES_ENABLE"项,勾选上。这将在sundials-2.5.0-install文件夹中输出样例C文件,便于学习和复用。
【意外情况2:】
在选择第一项后,出现以下错误:fatal error C1083: 无法打开包括文件:No such file or directory
在这里插入图片描述
在日志文件中查看错误如下:
在这里插入图片描述

2.2.3 动态库生成

进到sundials-X.X.X-build文件夹,可看到生成了sundials.sln工程。
在这里插入图片描述
双击"sundials.sln",打开该工程,在对应的"解决方案资源管理器"中将出现相应的子工程:
在这里插入图片描述
右键单击"ALL_BUILD"工程,单击"生成",将在sundials-X.X.0-build的各自工程目录文件夹中生成相应的动态链接库,例如cvode的库,找到"C:\sundials\sundials-X.X.0-build\src\cvode\Debug"路径,如下:
在这里插入图片描述
看到,已经生成了sundials_cvode.dll和sundials_cvode.lib。其它各库类似。
【错误1:】当选择x64时
在这里插入图片描述
【错误2:】当选择Win32时
在这里插入图片描述
按照上述步骤,界面如下所示:
在这里插入图片描述

2.2.4 动态库安装

生成各库以后,为了便于统一调用方便,源代码提供者另外写了"INSTALL"工程,能将所有使用中需要的头文件(include)和库文件(dll和lib)和案例文件(Example)复制到前面定义的sundials-X.X.X-install文件夹中。
也就是说,当"ALL_BUILD"工程被编译后,sundials-X.X.X-install文件夹仍然是空的;只有将"INSTALL"工程编译后,sundials-X.X.X-install文件夹才被写入对应内容。
右键单击"INSTALL"工程,单击"生成"。成功后,sundials-X.X.X-install文件夹中出现相应文件夹:

在VS工程中,添加c/c++工程中外部头文件(.h),lib库,dll库的基本步骤 参考

VS开发过程中,“无法打开源文件 xxxx.h”问题的解决方法?

PIHM模型使用Sundials库:

尝试:
1.第一次选择编译sundials5.5.0,将各.c文件引用的头文件明确后,因缺少三个函数,报错。试尝试将sundials2.2.0中的此三个头文件复制进去但无法编译失败。
在这里插入图片描述
尝试将所有的头文件放在一个文件夹内,但因各头文件有相互调用的关系,因而不可行。
2.将sundials2.2.0中的头文件按照各文件夹整理好,但函数无法识别各头文件。
在这里插入图片描述

3.尝试sundials2.4.0版本,但缺少sundials_smalldense头文件,将其复制进去后编译,还是无此头文件,尝试失败。
在这里插入图片描述
4.下载多个版本后,发现sundials2.2.0和sundials2.3.0有模型所需函数,但无法用CMake软件进行编译
dll文件如下:
sundials_cvode.dll
sundials_cvodes.dll
sundials_ida.dll
sundials_idas.dll
sundials_kinsol.dll
sundials_nvecserial.dll

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SUNDIALS库的编译和使用 的相关文章

  • week15实验

    文章目录 A题目要求代码 B题目要求代码 C题目要求代码 D题目要求代码 E题目要求代码 F题目要求代码 A 题目要求 Q 老师有 N 个学生 xff0c 每个学生都有各自独立的编号 xff0c 且编号范围在 1 N 之间 这一天 xff0
  • linux shell脚本执行错误:bad substitution

    sh test sh 出现bad substitution提示信息 与linux shell使用的是 bin sh xff0c 还是 bin bash有关系 脚本中指定使用的是 bin bash shell xff0c 在调试的时候使用的是
  • C语言算法之数组冒泡排序

    数组冒泡排序 include lt stdio h gt void main int i j t a 10 printf 34 please input 10 numbers n 34 for i 61 0 i lt 10 i 43 43
  • 使用frida获取微信EnMicroMsg.db 数据库密码

    这件事情浪费我两天时间 xff0c 期间遇到了各种坑 xff0c 记录一下 工具 xff1a python3 7 6 frida 12 8 0 mumu模拟器 adb SqlCipher 0x00 frida Frida是一款轻量级HOOK
  • Windows 下将 Nginx 设置成服务

    0 需求背景 每次启动 Nginx 都要去到 Nginx 安装目录下寻找 redis server exe 文件点击 xff0c 很是麻烦 并且要命令行启动 xff0c 一般解决方案可能是批处理文件 xff0c 但是仍要点击 假如确定服务要
  • Mac安装Anaconda后无法在终端使用conda命令 | pip install 换源命令

    解决办法 xff1a 在键入命令前先source一下 source bash profile 之后便可以正常执行conda 或 pip命令 在通过pip安装其他包时速度较慢 pip install xxx i https pypi doub
  • 程序设计思维与实践 Week13 实验

    目录 A 1 T1输入格式输出格式Sample InputSample OutputSample Input 2Sample Output 2思路代码 B 1 T2输入格式输出格式Sample InputSample Output思路代码
  • 程序设计思维与实践 Week15 实验

    目录 A Q 老师的记录册输入输出输入样例1输出样例1输入样例2输出样例2输入样例3输出样例3思路代码 B ZJM的本领输入输出样例输入1样例输出1样例输入2样例输出2思路代码 C TT 的神秘任务 XInputOutput样例输入1样例输
  • 程序设计思维与实践 Week6 模拟赛 A 掌握魔法の东东 II

    题目描述 xff1a 从瑞神家打牌回来后 xff0c 东东痛定思痛 xff0c 决定苦练牌技 xff0c 终成赌神 xff01 东东有 A B 张扑克牌 每张扑克牌有一个大小 整数 xff0c 记为a xff0c 范围区间是 0 到 A 1
  • 用java实现判断回文

    判断回文 要求代码实现 要求 编码实现 xff1a 输入一个字符串 xff0c 判断该字符串是否是回文 xff08 回文是指将该字符串含有的字符逆序排列后得到的字符串和原字符串相同的字符串 xff09 如果是回文 xff0c 则输出 Yes
  • codeblocks的多行快速注释的快捷键

    codeblocks的多行快速注释的快捷键 多行注释的快捷键 xff1a ctrl 43 shift 43 c 取消多行注释的快捷键 xff1a ctrl 43 shift 43 x
  • ubuntu错误添加了环境变量

    1 问题 今天试着安装一些东西 xff0c 错误的多添加了一些环境变量 xff0c 在虚拟环境里没有发现异样 xff0c 但从虚拟环境出来后发现在终端输入许多命令都显示未找到命令 xff0c 比如 终端输入 python 显示 bash p
  • win10摄像头灰色斜杠问题(Lenovo)

    方法一 百度 xff1a 在笔记本win10系统中 xff0c 通常都自带有摄像头功能 xff0c 但是有用户想要打开摄像头进行拍照或者视频的时候 xff0c 却遇到了不能用的情况 xff0c 一直显示一个灰色相机加一个斜杠 xff0c 没
  • SQL注入__布尔盲注和时间盲注

    SQL注入 布尔盲注和时间盲注 布尔盲注 猜测数据库 id 61 1 39 and length database 61 8 id 61 1 39 and length database gt 8 当前数据库第一位 截取数据库第一位 通过A
  • 命令执行绕过技巧

    命令执行绕过技巧 参考 xff1a https blog csdn net weixin 39190897 article details 116247765 参考 xff1a https blog csdn net solitudi ar
  • kali-信息收集简介

    kali 信息收集简介 nbtscan 这是一款用于扫描Windows网络上NetBIOS名字信息的程序 该程序对给出范围内的每一个地址发送NetBIOS状态查询 xff0c 并且以易读的表格列出接收到的信息 xff0c 对于每个响应的主机
  • 如何将图片转化为base64编码格式显示

    如何将图片转化为base64编码格式显示 base64编码 是将数据用 64 个可打印的字符进行编码的方式 xff0c 任何数据底层实现都是二进制 xff0c 所以都可以进行 base64编码 xff0c base64编码 主要用在数据传输
  • 利用frp工具实现内网穿透

    利用frp工具实现内网穿透 注意 xff1a 此工具依赖一个有公网 IP 的 PC 或服务器 内网穿透工具就是为了解决上述的没有公网 IP 的问题的 frp简介 项目地址 xff1a https github com fatedier fr
  • MISC相关工具下载

    写在前面 xff1a 本文包含在windows和在kali下使用的工具 xff0c win下已做标 MISC相关工具下载 图片相关 jpg f5 steganography F5隐写 xff0c 需要passwd 安装 kali中安装 xf
  • 程序设计思维与实践 Week8 作业 B 猫猫向前冲

    题目描述 xff1a 众所周知 xff0c TT 是一位重度爱猫人士 xff0c 他有一只神奇的魔法猫 有一天 xff0c TT 在 B 站上观看猫猫的比赛 一共有 N 只猫猫 xff0c 编号依次为1 xff0c 2 xff0c 3 xf

随机推荐

  • CobaltStrike的使用

    CobaltStrike的使用 01CobaltStrike CobaltStrike是一款渗透测试神器 xff0c 被业界人称为CS神器 CobaltStrike分为客户端与服务端 xff0c 服务端是一个 xff0c 客户端可以有多个
  • Wireshark软件使用教程

    Wireshark软件使用教程 Wireshark是非常流行的网络封包分析软件 xff0c 可以截取各种网络数据包 xff0c 并显示数据包详细信息 常用于开发测试过程各种问题定位 本文主要内容包括 xff1a 1 Wireshark软件下
  • Sublime text 3 如何下载安装汉化插件,配置python2编译环境

    Sublime text 3 如何下载安装汉化插件 xff0c 配置python2编译环境 下载地址 下载地址 xff1a http www sublimetext com download 软件汉化 首先 xff0c 需要安装Packag
  • 利用WireShark将pcap数据流还原文件

    利用WireShark将pcap数据流还原文件 使用工具 xff1a WireShark WinHex 1 打开pcap文件 2 对数据流进行筛选 利用ctrl 43 f打开或Edit 编辑查找分组 选择分组字节流 字符串 xff0c 筛选
  • 利用python脚本删除txt文件每行后4个字符,并换行

    利用python脚本删除txt文件每行后4个字符 xff0c 并换行 import os filename 61 r 34 123 txt 34 new filename 61 r 34 1234 txt 34 with open file
  • 摩斯密码解密py脚本

    摩斯密码解密py脚本 解题思路 0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010
  • MinGW+Sublime Text下载和安装运行C和C++程序

    MinGW 43 Sublime Text下载和安装运行 MinGW下载和安装教程 http c biancheng net view 8077 html Sublime Text运行C和C 43 43 程序 http c bianchen
  • grep 命令介绍

    grep 命令介绍 grep 查找文件里符合条件的字符串 xff0c 常与管道符 cat ps一起使用 xff1b 主要用于查找文件中符合条件的字符串 统计文件中符合条件的字符串行数 grep 不显示自身进程 grep 常用命令参数 c x
  • Kali Linux 安装slowhttptest步骤

    Kali Linux 安装slowhttptest步骤 Slowhttptest其实是一个DoS压力测试工具 xff0c 它集成有三种慢速攻击模式 slowloris slow http post slow read attack xff0
  • 在Centos中,程序运行是正常的,外部不能访问,内部可以访问问题解决

    在Centos中 xff0c 程序运行是正常的 xff0c 外部不能访问 xff0c 内部可以访问问题解决 今天遇到一个问题 xff0c 在centos中用python3搭建的一个web服务 xff0c 发现在centos内部可以访问网站
  • 程序设计思维与实践 Week9 作业 A 咕咕东的目录管理器

    题目描述 xff1a 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响 xff0c 时不时发生故障 xff0c 他受不了了 xff0c 想要写一个高效易用零bug的操作系统 这工程量太大了 xff0c 所以他定了一个小目标 xff0c
  • jsoncpp linux平台编译和arm移植

    0x00 下载 http sourceforge net projects jsoncpp 或者 http download csdn net detail chinaeran 8631141 0x01 Linux平台编译 安装 scons
  • 摩斯密码解码脚本

    摩斯密码解码脚本 解题思路 0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0
  • php匹配关键字并跳转页面

    php匹配关键字跳转页面 strstr函数搜索要从目标字符串中搜索的字符串 xff1b strstr函数仅用于检查字符串是否存在 xff1b strstr函数的用法如下 lt php b 61 39 or 39 name 61 GET 39
  • docker常见命令小结

    docker常见命令小结 常见命令 docker ps 查看正在运行的容器 docker exec it 264bb068855e bin bash 进入容器 xff0c 并作出修改 docker commit 3bd0eef03413 l
  • 前端html文件下载,同源与异源下载

    属性说明download下载的资源的名称target打开该连接的方式 self blank href资源的地址 本地 远程地址 a标签跳转 lt DOCTYPE html gt lt html gt lt head gt lt meta c
  • Python图像(字母数字)识别

    本文只针对数字或字母验证码识别 准备工具 tesseract ocr w64 setup v4 1 0 20190314 exepip install pytesseractpip install pillow中文包 tesseract o
  • Python习题

    1 题目 xff1a 编写一个程序 xff0c 使用for循环输出0 10之间的整数 xff1b 代码 xff1a span class token keyword for span i span class token keyword i
  • 面向对象模块和包

    文章目录 1 1 模块1 2 模块的使用2 包 1 1 模块 参考链接 xff1a Python 面向对象 模块和包 来源 xff1a CSDN Python面向对象 模块和包 来源 xff1a CSDN 概念 xff1a 每一个以py为拓
  • SUNDIALS库的编译和使用

    SUNDIALS库的编译和使用 1 简介 SUNDIALS SUite of Nonlinear and DIfferential ALgebraic equation Solvers 是由美国劳伦斯利福摩尔国立实验室 xff08 Lawr