c和c++程序设计
novanova2009
这个作者很懒,什么都没留下…
展开
-
vtkCGNSreader
【代码】vtkCGNSreader。原创 2023-11-10 22:47:00 · 140 阅读 · 0 评论 -
Slurm脚本示例
A-%a - 作业id (A) 和任务id (a)默认为2Gb,可以指定单位为mb或者gb。设置作业名称,以便在队列中查看(替换中的参数)对于非MPI作业,该数值需要为1。格式HOURS:MINUTES:SECONDS。例如,#SBATCH --array=1-5。END,FAIL - 作业结束和失败时发送。任务数,对于非MPI作业,该数值需要为1。可以用--error单独输出错误log。task(MPI的ranks)的数目。可以创建一组任务(作业)分配给该作业的最小节点数。NONE - 不发送。原创 2023-01-17 16:24:16 · 1957 阅读 · 1 评论 -
时间和字符串格式的相互转换
visual studio 2022测试通过。原创 2022-12-17 19:07:33 · 449 阅读 · 0 评论 -
Qt tips&tricks
在vs中的qt tools的general选项卡,找到qt designer detached window,设置为true。然后用d.exists(name)来判断name这个文件/目录是否存在于目录中。查询是否在某个目录中存在某个文件的方法。要注意qdir和qfile用法不同。1、visual studio中打开ui文件, qt desginer闪退。其中路径要用斜杠,而不管操作系统是win还是linux。3、用vs编译qt如何设置lib和include。qt调试时输入文件的默认路径是什么?原创 2022-11-06 13:55:18 · 118 阅读 · 0 评论 -
数值带物理单位的c++库
If you are looking for compile time and prevention of unit errors in equations for dimensional analysis one of these libraries might work for you.These libraries will work well if the number of units being dealt with is known at compile time. Many also pro原创 2022-10-07 22:14:59 · 330 阅读 · 0 评论 -
CVODE入门
然后进入vcpkg目录中,vcpkg install sundials:x64-windows,这样安装64位dll。如果已有数据存储在ydata中,可以调用y0 = N_VMake_***(..., ydata)CVodeInit(),定义方程组信息,分配内部的内存,初始化。新建项目后,在项目属性中可以看到vcpkg选项,证明安装好了。然后运行目录中的Bootstrap_vcpkg.bat。否则,调用N_VNew_***(...)创建新的向量。16、释放线性求解器和矩阵的内存。3、设置问题的大小?原创 2022-09-10 17:57:35 · 1024 阅读 · 0 评论 -
visual studio c++包含目录
双引号会搜索源文件当前目录,父目录和祖父目录,以及编译选项/I指定的目录和include环境变量指定的目录;如果/I指定了准确的包含文件目录,使用双引号和双尖括号无区别。编译选项/I指定的目录和include环境变量指定的目录;目录指定时,末尾带\和不带\无区别。这里不是自相矛盾么?原创 2022-09-04 11:33:26 · 278 阅读 · 0 评论 -
QProcess类
QProcess可把一个process当做一个顺序IO来对待,因此可以对其读写,即write(),read(),readLine()以及getChar()。如果有输出了,会发出readyReadStandardOutput()和readyReadStandardError()信号,可以使用readAllStandardOutput()或readAllStandardError()来读取全部数据。也可以通过setArguments()来设置(需要在调用start之前调用)。...原创 2022-07-21 10:20:58 · 400 阅读 · 0 评论 -
vector和类拷贝构造函数
vector添加元素的时候采用的是拷贝构造函数。编译器生成的是浅拷贝的拷贝构造函数。test1这个类采用了固定长度的数组,浅拷贝没有问题。test这个类采用了指针,实现动态长度数组。需要使用深拷贝构造函数。默认的拷贝构造函数为什么能够正确处理test1这种类的拷贝?说明它的实现是直接把内存中的值复制了一遍。指针的值是动态数组的内存地址。所以,复制指针的值是不对的。...原创 2022-07-02 17:54:07 · 573 阅读 · 0 评论 -
c++中的json读写库
1 jsoncpp这个库并不好用。主要缺点包括1)需要编译成lib或者dll才能用2)提供的读取方法,比如asString、asFloat的语义不容易理解。比如一个整数“1”,到底可以asString、asFloat还是asInt?3)好像没有默认的中文支持。转而使用了NLOHMANN_JSON_HPP,一个包含文件,解决全部问题。2JSON for Modern C++...原创 2022-04-20 10:04:01 · 1137 阅读 · 0 评论 -
大规模程序设计笔记-1
中国电力出版社翻译版2.3 全局命名空间2.3.1 全局数据全局变量将对象和代码绑在一起,使得在别的程序中实际上不可能有选择地重用编译单元。有两种简单的变换方式能将这些变量非全局化:1)将所有全局变量放入一个结构中;2)然后将其私有化并添加静态访问函数。...原创 2022-03-07 08:18:14 · 86 阅读 · 0 评论 -
工业软件方法书目
1 致命Bug,软件缺陷的灾难与启示,人民邮电出版社2 工业软件简史,林雪萍3 矩阵计算Matrix computations4 Iterative methods for sparse linear systems, yoursef saad5 大规模c++程序设计, john lakos6 Boundary representation modeling techniques, Ian Stroud7 计算机图形学原理及实践...原创 2022-01-23 11:00:59 · 280 阅读 · 0 评论 -
三维坐标绕任意轴旋转计算方法
struct XYZ{ double x; double y; double z;};void Normalise(XYZ* s){ double s2 = sqrt(s->x*s->x + s->y*s->y + s->z*s->z); s->x = s->x / s2; s->y = s->y / s2; s->z = s->z / s2;}XYZ RotatePointAboutLine(XYZ ..原创 2022-01-08 22:28:36 · 1550 阅读 · 0 评论 -
fortran和c++数据交换
第 11 章 C-Fortran 接口 (Sun Studio 12:Fortran 编程指南) (oracle.com)此文详细介绍了不同数据类型的声明和调用方法。请注意不同编译器的实现不同。通常,fortran例程按引用传递参数。而c通常按值传递参数。在fortran和c之间传递数据的标准方法是按引用传递。对于c,fortran的子程序或函数就像是一个所有参数都用指针表示的过程调用。例如:int i=100;float r;extern void fsim_(int *i, float原创 2021-10-13 15:48:06 · 682 阅读 · 0 评论 -
c文件处理
fscanf()等用法while(fscanf(fp,"%[^,]",buf)!=EOF){//从文件中读取直到‘,’为止 fgetc(fp); //读取',' fscanf(fp,"%d",&buf2_int);//读取int fgetc(fp); //读取',' fscanf(fp,"%s",buf3);//读取第三部分 fgetc(fp);//谨记!!读取换行符!这句不可省略。fsacnf()读取的时候不读'\n'}...原创 2021-09-09 10:24:59 · 98 阅读 · 0 评论 -
并行计算机分类
Flynn's classic taxonomy1966年被提出,从处理器/cpu/计算核心角度分类:计算依赖instruction指令和数据,据此分成四类:单指令单数据,单指令多数据,多指令单数据,多指令多数据单指令单数据:一个时钟周期执行一个指令;最早期的电脑单指令多数据:任何时钟周期,处理单元执行相同的指令。GPU和向量处理器x86 avx指令。现在这种处理器很常见。多指令单数据:only experimentby CMU in 1971, could be used for f.原创 2021-08-14 23:10:47 · 652 阅读 · 0 评论 -
windows c程序中创建目录
int createDir(char* path, char* subDirStr){ char cwd2Make[500]; strcpy_s(cwd2Make, path); strcat_s(cwd2Make, subDirStr); struct stat file_stat; if (stat(cwd2Make, &file_stat) < 0) { _mkdir(cwd2Make); printf("ok %s\n", cwd2Make); return .原创 2021-07-30 16:10:34 · 520 阅读 · 0 评论 -
openmp的critical和atomic
critical可以用于任意只需要一个线程执行的地方,atomic只用于内存读写。critical对性能影响非常大。原创 2021-07-28 16:42:28 · 664 阅读 · 0 评论 -
netcdf自行编译
平台windows + visual studio 2017netcdf-c库最新版4.8自己编译,没有成功。cmake提示没有m4。但是搜索netcdf的帮助,说已经去掉m4的依赖了。原创 2021-06-20 11:17:23 · 404 阅读 · 2 评论 -
科学数据格式-netCDF
NetCDF(network common dataform)是一组软件库和独立于机器的数据格式,支持创建、访问和共享面向阵列的科学数据。它也是共享科学数据的社区标准。UnIDATA程序中心支持和维护C、C++、java和FORTRAN的NETCDF编程接口。编程接口也可用于Python、IDL、MATLAB、R、Ruby和Perl。netCDF格式的数据是:自我描述。netCDF文件包含有关其包含的数据的信息。便携式。一个netCDF文件可以通过不同的方式存储整数、字符和浮点数被计算机访...原创 2021-06-10 10:12:55 · 489 阅读 · 0 评论 -
for each 对象 in collection
发现这个对象变量是临时创建的?所以对这个变量的更改不会反映到collection的对象里面。参考其他人的经验,用for (auto& 对象变量:collection),解决问题。原创 2021-03-18 15:02:41 · 117 阅读 · 0 评论 -
c++判断文件结束的方法
do{}while(file.eof());这种结构,文件最后的行会重复读取?原因是什么?while(file){}这种结构似乎正常。原创 2021-03-16 22:25:10 · 3027 阅读 · 0 评论 -
intel编译器免费下载
Intel oneAPI可以免费下载使用,包括c++,fortran等高性能编译器下载地址https://software.intel.com/content/www/us/en/develop/articles/free-intel-software-developer-tools.html原创 2021-02-23 23:59:58 · 4907 阅读 · 0 评论 -
visual studio c++添加文档注释,生成api文档
1 可自动添加文档注释的插件Atomineer Pro Documentationfor Visual Studiosingle-user license,76美元visual assist x2 visual studio可通过/doc编译选项生成xml格式的代码,然后通过sandcastle等工具处理生成api文档3 visual studio推荐的xml注释标记&l...原创 2020-02-02 16:47:04 · 2427 阅读 · 0 评论 -
dislin使用方法
1 下载安装编译链接我是用在visual c++上绘图。从https://www.mps.mpg.de/dislin/distributions下载windows 32-bit和windows 64-bit。然后解压缩,然后点击setup.exe安装。windows 10 smart screen 会提示说有风险,点击 仍要运行。安装在c盘dislin目录下。然后设置环境变量pat...原创 2019-01-30 23:45:31 · 1506 阅读 · 1 评论 -
Optix Prime入门
OptiX通常用于表示整个算法实现,无论是渲染,可见性,辐射传输还是其他任何方式。 OptiX的许多用户可编程部分允许应用程序表达复杂的操作,例如着色,这些操作与光线跟踪操作紧密混合,通常递归,并以单射线编程模型表示。通过封装算法的可编程部分并拥有整个算法,OptiX可以在GPU上执行整个算法,并在发布时优化每个新GPU的执行。 有时,只需要光线跟踪功能,例如可见性、平凡光线投射渲...原创 2019-05-25 23:04:33 · 895 阅读 · 7 评论 -
optix入门
射线追踪是embarrassingly parallel/perfectly parallel/pleasingly parallel的问题,就是说基本不用费劲就可以并行化。射线追踪是指从某点发射射线,判断其与几何结构的交点,根据交点对图像进行渲染,或者计算。nvidia optix是基于cuda的api,可充分利用gpu的计算能力对射线追踪进行加速。主要概念和步骤:...原创 2019-03-13 20:35:55 · 6879 阅读 · 0 评论 -
CUDA和optix安装、设置、编译
1 windows+visual studio安装使用1.1 CUDA参考:cuda_installation_guide_windows.pdf安装cuda后,最好运行deviceQuery.exe,如果显示信息最后有pass,表明正常。然后运行bandwidthTest,如果显示pass,证明系统和gpu可通信,一切正常。上述程序的位置可能在C:\ProgramData\NVIDI...原创 2019-03-30 20:08:53 · 5252 阅读 · 0 评论 -
八叉树搜索-1
翻译版权所有,转载请注明。八叉树由于划分规则且与坐标轴平行,是很常见的空间划分技术。八叉树是射线追踪加速普遍采用的方法,射线穿过八叉树时,可只针对八叉树包含的节点进行求交。与简单的O(MxN)算法相比,这种射线-物体求交测试次数大大减少。理论上说,这是加速射线追踪非常有效的方法。但实践中,对于有大量单元的复杂场景八叉树显然有用,但对于较简单的场景,它开销过大。八...原创 2019-01-06 20:29:37 · 2266 阅读 · 0 评论 -
cgns编译使用
cgns是通用cfd输入输出格式。官网没有编译好的库文件提供,需要自行编译。网上很少有关于cgns库编译的介绍。只能靠自己摸索。cgns 3.3.1提供了cmake文件,可以使用cmake进行配置。然后由vs c++进行编译。此处记录配置和编译过程。1 配置下载解压cgns xxx.zip;tcl/tk:active tcl(这个是cgns tools需要的文件,cgns tool...原创 2018-04-14 23:26:29 · 8471 阅读 · 4 评论 -
fortran和c++互操作
fortran程序,编译成lib,c++调用,总是出现链接错误。可能的原因:1 编译器:gcc 6.3fortran程序编译为静态库后,函数名称小写,后面默认带有下划线,例如_a_()。而c程序编译后,函数名称的形式是只有前面带有下划线,例如_a()。c++程序编译后,函数名称的形式是__Z12SampleAddIntii (SampleAddInt(int, int))......原创 2018-05-18 21:21:47 · 4520 阅读 · 0 评论 -
char*和string的赋值
char*可以直接赋值给string。#include <iostream>using namespace std;int main(){ char * hello = "Hello world"; string hellostr = hello; cout << hellostr << "\t" << hello...原创 2019-01-22 22:37:13 · 15257 阅读 · 0 评论 -
c++在线编译网站
https://www.tutorialspoint.com/compile_cpp_online.phphttp://cpp.sh/原创 2019-01-22 22:34:29 · 5397 阅读 · 0 评论 -
Optix如何获得ray与场景的所有交点
为了获得沿光线的所有命中,最简单的方法是在每个nearest_hit之后继续射线,直到你不再击中任何东西。在OptiX中意味着到达未命中程序,在OptiX Prime中意味着没有获得命中结果。单独使用OptiX any_hit程序来收集光线上的所有命中点将不适用于使用像SBVH或TRBVH这样的拆分的边界体积层次结构,其中基元可以在较小的BVH中出现多次。这将导致重复的命中。在OptiX ...原创 2019-05-26 23:05:32 · 555 阅读 · 0 评论 -
optix prime示例程序
//------------------------------------------------------------------------------int main( int argc, char** argv ){ // set defaults RTPcontexttype contextType = RTP_CONTEXT_TYPE_CPU; RTPbuffer...原创 2019-05-26 23:06:02 · 349 阅读 · 0 评论 -
error C1189: #error : "optixu_math_namespace.h needs NOMINMAX defined on windows."
Right Click on your project in Visual Studios, select configuration properties->C/C++->Preprocessor->Preprocessor DefinitionsThen Add NOMINMAX原创 2019-05-27 22:20:40 · 396 阅读 · 1 评论 -
optix prime示例程序2
#include "primeCommon.h"#include <sutil.h>#include <random>#include <optixu/optixu_math_namespace.h>#include <optixu/optixu_aabb_namespace.h>using namespace std;int m...原创 2019-08-11 01:24:21 · 298 阅读 · 0 评论 -
cuda编译出现lnk2019错误
cu文件包含被cpu调用的函数。此时出现LNK2019错误:无法解析的外部符号。仔细检查文件,函数名称、参数并没有写错。包含文件和库文件都在项目属性中配置了。问题出在链接过程。nvcc需要调用vc的链接器完成编译过程。如果编译时compilation type为ptx,只编译生成gpu上的代码,不管cpu上的代码。因此找不到对应的函数,出现错误。所以,把compilation ty...原创 2019-08-10 00:56:51 · 1066 阅读 · 0 评论 -
cuda中__global__和__device__的区别
https://stackoverflow.com/questions/12373940/difference-between-global-and-device-functions__global__是kernel函数,可从cpu调用,调用时用<<< >>>语法配置并行化参数。__device__是只能从一个gpu函数调用,不能从cpu调用。...原创 2019-08-10 11:51:56 · 6523 阅读 · 0 评论 -
visual studio统计项目的总代码行数
ctrl+shift+f,调出高级搜索。然后选择正则表达式。输入一个最简单的正则表达式:\S意思就是除了空行,都统计进来。然后点击搜索,在结果框中可以看到总行数。...原创 2019-07-06 14:09:06 · 330 阅读 · 0 评论