本文不是 odb 的教程,只是介绍如何在 WSL2 下使用 cmake 搭建 odb 应用的编译环境。 ODB 是什么? ODB 是 c++ 的对象持久化工具,底层支持的数据库包括 mysql/pgsql/sqlite/sqserver/oracle。更多关于 odb 的信息可以参考官网手册。 > #include <odb/mysql/database.hxx> #include "person.hpp" #include "person-odb.hxx" using namespace ) target_link_libraries( mtest odb odb-mysql ) ODB_GENERATE(person) 编译代码,运行后查询数据库: image.png 环境搭建完了,可以畅快的学习 odb 了。
(别的平台,别的数据库下载相应该的库文件) odb-2.3.0-i686-windows(ODB的编译器,就是所对象成对sql和头文件,用于持久化相关) libodb-2.3.0(ODB的核心库,编译出来的 中需要) odb-examples-2.3.0 (odb的例子和演示) 三,安装ODB 安装很简单。 1,编译ODB核心库,生成odb-d.lib和odb-d-2.3-vc11.dll 2,编译sqlite库,生成sqlite.lib 3,编译ODB的sqlite库,生成odb-sqlite-d.lib 1,用ODB编译器生成,persion.hxx,和person-odb.ixx文件。 插曲:当时odb才安装好,在自己打开的cmd命令中odb是OK的,但在批处理中写的odb系统却找不到odb。导致vs中讲运例子出现错误。
&& cd odb-build dev@dev-host:~/workspace/odb-build cd odb-gcc-N dev@dev-host:~/workspace/odb-build/odb-gcc-N bpkg build odb@https://pkg.cppget.org/1/beta dev@dev-host:~/workspace/odb-build/odb-gcc-N bpkg test /odb-build/odb-gcc-N bpkg install odb dev@dev-host:~/workspace/odb-build/odb-gcc-N odb --version bash /odb-gcc-N{PATH}:/usr/local/bin dev@dev-host:~/workspace/odb-build/odb-gcc-N odb --version ODB object-relational 安装 ODB 运行时库: dev@dev-host:~/workspace/odb-build/odb-gcc-N cd .. dev@dev-host:~/workspace/odb-build bpkg
该网友的问题,实际上是两个问题: 问题1是如何批量提交job; 问题2是如何从ODB结果文件中读取计算结果数据。 因此本文也从两个方面来进行介绍。 问题2 如何从ODB结果文件中读取计算结果数据 第二个问题是大家经常要面对的,常规的数据提取采用ABAQUS自带的后处理工具已经能满足需求了,但是如果我们需要进行一些写出文本,数据筛选 odbAccess import * from visualization import * frame_num = 20 #定义需要输出的帧 odbName = 'X:/***/***.odb ' #odb路径和名称 elemSetName = '***' #单元set odb = openOdb(path=odbName)#打开odb region = odb.rootAssembly.elementSets [elemSetName] frameRps = odb.steps['Step-1'].frames f_S1 = frameRps[frame_num].fieldOutputs['S'] #需要输出的场变量
/disks/*, AFD:* profile:/dev/oracleasm/disks/*,AFD:* 5、检查 GI 环境中的节点 [grid@odb02 ~]$ olsnodes odb02 odb03 6、RAC所有节点停止集群服务 [root@odb02 ~]# crsctl stop crs [root@odb03 ~]# crsctl stop crs 7、RAC所有节点卸载ASMLIB软件 odb02 odb03 [root@odb02 ~]# asmcmd afd_label data01 /dev/sdb1 --migrate [root@odb02 ~ ACFS-9322: completed 12、RAC所有节点启动CRS [root@odb02 ~]# crsctl start crs [root@odb03 ~]# crsctl start crs :/dev/oracleasm/disks/*,AFD:* [grid@odb02 ~]$ asmcmd dsset 'AFD:*' [grid@odb02 ~]$ asmcmd dsget parameter
或者SharePoint就可以同步过来文件,而且他们平时也都是使用ODB进行版本更迭与控制。 我们梳理一下手头的东西: 财务部Power BI和ODB账号 运营部Power BI和ODB账号 运营部ODB中的pbix文件 不难发现如下的解决方案: 只要让运营部ODB中的pbix文件出现在财务部的 (点击此处查看实施方案) 那么问题的关键就在于: 如何让运营部ODB中的pbix文件出现在财务部的ODB中? 或者换个说法: 如何让运营部ODB中的pbix文件能够随时同步到财务部的ODB中呢? 解决方案 想必大家已经猜到了, 或者说从本文的标题上也找到了答案: Power Automate 我们可以使用云端自动化流,当运营部ODB中的pbix文件发生修改时,将该文件复制到财务部的ODB中,覆盖原有的文件以达到更新的目的 下图是运营部的ODB中的文件: flow运行成功后,在财务部的ODB中出现了同样的文件,并且每次文件更新时,财务部ODB中的文件会直接覆盖更新: 而且进行多次更新后,我们可以在财务部ODB的文件上选择查看版本
本文分为两大部分: 一是讨论连接ODB上文件的几种方法与优劣对比 二是实现将已有的本地数据源报告切换到ODB数据源,同时不改变模型结构 以下展开。 ②我们换个思路,该文件是从ODB中获取的,而PowerBI有专门的ODB链接器 选择更多 我们选择SharePoint文件夹 提示让我们输入根URL 也就是截取以上文件路径中的一部分即可 https:/ 这样,所有ODB中的文件获取都是以这个“ODB根目录”为数据源进行展开。 有朋友说,右键时选择“复制”是不是也可以? 我们可以设想,如果有几十个文件从ODB中获取,如果每一个都进行复制,那么就意味着每一个查询都将直接从ODB中获取一次数据,这是对算力的巨大浪费。 而如果都是“引用”,引擎只会从ODB查询一次。 总结 本文通过讨论连接ODB文件的三种方式并比较它们的优劣,确定了今后在进行ODB文件获取时使用SharePoint.Contents连接器。
onas ~]# showmount -e Export list for onas: /u02 * 3、RAC节点挂载NFS共享 RAC节点分别编辑/etc/fstab文件,加入以下内容: [root@odb01 ~]# mount -a [root@odb02 ~]# vi /etc/fstab onas:/u02 /u02 nfs rw,bg,hard ,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0 [root@odb02 ~]# mount -a 4、安装Grid 待Grid组件安装并配置完成后,默认会创建一块30G大小的磁盘ocrvfdgdisk0,用于OCRVFDG磁盘组,如下: [root@odb01 ~]# la /u02/asmrac/ total 33G * 5.4 创建ASM磁盘 [root@odb01 ~]# for i in {1..10};do oracleasm createdisk vol$i /dev/loop$i;done [root@odb02
(1)使用USDFLD子程序,对于计算过程有无影响的场变量均适用,可以参考本公众号的早期文章【阿信ABAQUS子程序(7)】USDFLD; (2)使用Python脚本程序,该方式适用于对已经计算完的ODB 脚本创建新的场变量 # ############################### from odbAccess import * odbName = 'heattransfermanifold.odb ' odb = openOdb(odbName) stepName = 'heattransfer' frameRepository = odb.steps[stepName].frames UserTemp', description='A simple test', type=SCALAR) newField.addData(field=oldField) odb.close
busco -y busco=5.3.2 BUSCO数据库下载 # 列出数据框信息 busco --list-datasets # 下载细菌数据库 busco --download bacteria_odb10 文件移动到busco_plot文件夹内准备绘图 mkdir busco_plot mv busco_wMel_KL_genome_out/short_summary.specific.bacteria_odb10 .busco_wMel_KL_genome_out.txt busco_plot/ mv busco_wRi_genome_out/short_summary.specific.bacteria_odb10 .busco_wRi_genome_out.txt busco_plot/ mv busco_wMel_AMD_genome_out/short_summary.specific.bacteria_odb10 .busco_wMel_AMD_genome_out.txt short_summary.specific.bacteria_odb10.busco_wMel_KL_genome_out.txt short_summary.specific.bacteria_odb10
在采用Python对ABAQUS结果提取之前,首先我们要了解ABAQUS odb文件结构。 ABAQUS odb文件结构 实例:(采用ABAQUS 2017调试) (1) 查询ABAQUS数据结构 #! ************************ #导入模块 fromodbAccess import* fromabaqusConstants import* importsys importos odb =openOdb(path='C:\\Temp\\shangtest.odb') cpFile=open('artlcF1.txt','w') #--------------------------- =openOdb(path='C:\\Temp\\shangtest.odb') #创建变量lastFrame,得到载荷步Step-1的最后一帧 lastFrame= odb.steps['Step-
通常情况下,有限元计算中场变量在结果文件(Abaqus中ODB文件)中的存储主要在单元积分点和节点这两处。应力等状态变量的存储在积分点,而节点存储了节点位移,温度等场变量。 ###### # 节点量的提取与计算 # ############################ from odbAccess import * odbName = 'Job-1.odb ' #打开odb文件 odb = openOdb(odbName) stepName = 'Step-1' frameRepository = odb.steps[stepName].frames for i in range(len(fVal)): n_fVal = fVal[i] n_U = n_fVal.data print 'n_U =', n_U odb.close
注意:这里使用的是 Onedrive for Business(ODB) ,而不是个人版或家庭版的 Onedrive(OD),因为OD本质上只是个web url,具体参考这篇文章:【重磅】PowerBI 这里的从ODB获取数据不要求Power BI和ODB为同一个账号或同一个组织账号,但是世纪互联版的 Power BI 无法获取国际版的ODB文件,反之亦然。 ③因为有很多公司可能会团队共同维护数据,需要设置共享盘,那么ODB就是一个绝佳的选择,单个用户5T的空间,想必任何数据都可以满足要求。 ④ODB中的数据文件,误删或者修改全部都有记录,全都可以随时找回,再也不必担心数据丢失问题。 但仅限于你没有 Office 365 中的 ODB。 如果你有,那么恭喜你,你解锁了一个全新的发布报告方式。
mises应力的提取与计算 # ############################ from odbAccess import * odbName = 'Job-lugPlastic.odb ' odb = openOdb(odbName) stepName = 'LugLoad' frameRepository = odb.steps[stepName].frames #读取最后一帧 e_S = e_fVal.data e_mises = e_fVal.mises print 'e_S =', e_S print 'e_mises =', e_mises odb.close
在Onedrive for Business(以下简称ODB)中创建一个文件是非常轻松的一件事: 选择想要的路径,设置文件名,选择文件内容(文件内容大部分时候都是来自于其他action,比如邮件附件或者 添加一个ODB的删除文件,选择上一步生成文件的ID: 在ODB中查看,果然生成了一个空文件夹。 我们再看一眼所需的时间,只需要14ms,根本忽略不计。 结论: Power Automate flow虽然并没有给我们提供一个单独的action来实现在ODB中创建空白文件夹,但是我们通过一点小技巧就可以巧妙的实现。
实验环境: 1、停止RAC集群服务 在两个节点分别停止集群服务: [root@odb09 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster -all [ root@odb09 ~]# /u01/app/11.2.0/grid/bin/crsctl stop crs [root@odb10 ~]# /u01/app/11.2.0/grid/bin/crsctl
如下图: 2、使用yum安装 我这里使用的为oracle linux,软件源用的是oracle软件源,安装如下: [root@odb03 ~]# yum -y localinstall /u02/oracle-database-ee [root@odb03 ~]# vi /etc/sysconfig/oracledb_testdb-18c.conf #This is a configuration file to setup the ORACLE_DATA_LOCATION=/u03/oradata # EM_EXPRESS_PORT: Oracle EM Express listener EM_EXPRESS_PORT=5500 [root@odb03 修改完成后,执行/etc/init.d/oracledb_ORCLCDB-18c configure命令创建数据库实例以及监听,如下: [root@odb03 ~]# /etc/init.d/oracledb_ORCLCDB
9.ORM框架(如ODB、SqliteCpp、Boost.Beast+自定义ORM)ODB:优点:编译时ORM,性能优秀,类型安全。缺点:需要编译器插件,学习曲线陡峭。 ORM需求:ODB(编译时)、QtSQL(运行时)。现代C++风格:mysql-connector-cpp、pqxx、SqliteCpp。
3.8.2 统一数据源的路径参数化 关于统一数据源的操作,我们曾在第 2 章行了具体的阐述,总的原则是先获取本地路径的目录、ODB对应文件夹目录或是数据库的根目录,然后通过引用目录的方式分别获取各个表, ODB获取,即我们在第 2.2 节中所介绍的内容。 因为参数化只是对本地路径的修改有效,而不能直接将本地路径替换为ODB路径或者数据库连接。 试问正在读本书的阁下,应该如何应对? 图3.x 本地数据源的文件与文件夹显示 接下来,他将整个文件夹上传到ODB中,并使用第2.2节中的SharePoint.Contents获取ODB中的对应目录,得到如图3.x所示。 图3.x ODB目录 仔细观察以上两个查询的结果,不能说很像,简直就是一模一样。
[oracle@odb12c OPatch]$ . 备份,替换 [oracle@odb12c ~]$ cp -r /U01/app/oracle/product/12c/db_1/OPatch/ OPatch_bak [oracle@odb12c ~ ]$ rm -rf /U01/app/oracle/product/12c/db_1/OPatch [oracle@odb12c ~]$ mv OPatch /U01/app/oracle/product [oracle@odb12c OPatch]$ .