网站地图
首页
新闻
电影新闻
电视新闻
人物新闻
专题策划
影评
最新影评
新片热评
经典赏析
媒体评论
电影院
北京影讯
上海影讯
广州影讯
深圳影讯
成都影讯
电影库
典藏佳片
全球新片
即将上映
票房榜
社区
日志
相册
电影
好友
专辑
收藏
影视杂谈
明星时尚
文化休闲
群组
话题
达人
排行榜
电影榜
电视榜
人物榜
日志榜
话题榜
您当前的位置: 社区>> 博客>>

编辑 | 删除 转载 backward Euler scheme

oml_the_nameless_one 发布于:

 The backward-Euler method also truncates the Taylor series after two terms. The difference is that the derivative is uated at point 

$ t+h$ instead of at point $ t$.

 

 

$\displaystyle y(t+h) =

 

Assuming that the value at point $ t$ is correct, the backward-Euler method computes the value at point $ t+h$ with a local truncation error that scales with $ h^2$. The backward-Euler method always gives undershoots on the original curve.

Normally we do not know the derivative at point $ t+h$, although we need it to compute the function value at point $ t+h$. In practice this requires a rearrangement of the equation. We call such a numerical scheme an implicit numerical scheme. For most equations implicit schemes are more stable than explicit schemes because of the undershoots.

 

Figure: Graphical illustration of the backward-Euler method. To obtain point 2 from point 1, we take the derivative at point 2 and extrapolate it at point 1. To obtain point 3 starting at point 2, we do the same: take the derivative at point 3 and extrapolate it at point 2.
\includegraphics[scale=0.6]{figures/beuler.eps}

回复 (0) | 28 次阅读

编辑 | 删除 pbs fluent graphic

oml_the_nameless_one 发布于:

 

回复 (0) | 5 次阅读

编辑 | 删除 fortran dummy argument problem

oml_the_nameless_one 发布于:

 转载http://blog.sina.com.cn/s/blog_7ee9bcbc01012932.html

 

error #7836: If the actual argument is scalar, the corresponding dummy argument shall be scalar unless the actual argument is an element of an array that is not an assumed-shape or pointer array, or a substring of such an element.

改正方法之一:The dummy argument problem : I see you are using Fortran v11. I think that by default this has the options
Project->Properties->Fortran->Diagnostics Check Routine Interfaces and Generate Interface Blocks set YES, you could try setting them both to NO.

注意该方法的缺点。

回复 (0) | 117 次阅读

编辑 | 删除 libcmtd.lib库冲突

oml_the_nameless_one 发布于:

VS2005链接问题: LNK2005错误 :error LNK2005: _free 已经在 libcmtd.lib(dbgheap.obj) 中定义


以前经常遇到这个警告信息,因为运行并没有什么问题,所以也没深究。但是耿耿于怀那个“ 0 个错误,0 个警告”的成功提示,在网上搜了一下。原来问题出在默认库的引用选择上。

VS2008,项目——属性——配置属性——C/C++——代码生成:他有/MT,/MTd,/Md,/MDd四个选项,你必须让所有使用的库都使 用相同的配置,否则就会有相应的提示,甚至可能会出现无法解析的函数。有时我们使用的库不是自己可以控制的,那么就只能把工程属性设置成河你使用的库相同 的选项。

错误 1 error LNK2005: _free 已经在 libcmtd.lib(dbgheap.obj) 中定义         MSVCRT.lib

错误 2 error LNK2005: _malloc 已经在 libcmtd.lib(dbgheap.obj) 中定义     MSVCRT.lib

.....

如果有一堆的重定义错误发生在同一个lib中,而且跟它冲突的也是同一个lib,那么这个两个lib的功能应该是一样的,可以2选一,只要在“忽略特定的库”内填入需要忽略的库。

项目属性-配置属性-链接器-输入-忽略特定的库:libcmtd.lib

项目属性-配置属性-常规-MFC的使用:在共享 DLL 中使用 MFC

MSVCRT.lib 和libcmt.lib的冲突还是比较常见的。

从错误信息可以看出是msvcrt.lib和libcmt.lib库中重复定义了__isctype等符号。为什么会出现这样的问题呢?这就要从这两个库的作用说起了。

msvcrt.lib是VC中的Multithreaded DLL 版本的C运行时库,而libcmt.lib是Multithreaded的运行时库。在同一个项目中,所有的源文件必须链接相同的C运行时库。如果某一文 件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的库,也就是说用了不同的库,就会导致这个警告的出现。

告警信息的意思我们明白之后,就要找造成这个问题的原因了。在项目设置中我们可以看到当前项目使用的是Multithreaded非DLL版本的运 行时库,这说明项目中还有其他文件用到了不是这个版本的运行时库。很显然,就是openssl的静态库。查看openssl中ms下的nt.mak,我们 可以发现静态库版本中openssl使用编译开关/MD进行编译的,也就是说openssl静态库是默认用的Multithreaded DLL 版本的C运行时库。

原因找到了。那么解决方法,很明显有两个。总之就是将两个项目的运行时库统一。

简单的方式就是将项目的动态库修改为使用Multithreaded DLL 版本的C运行时库即可。

某些情况下你的项目可能不能改变当前的运行时库,你可以将openssl的nt.mak中的/MD开关修改为/MT然后重新编译openssl静态库就可以了。

默认库“library”与其他库的使用冲突;请使用 /NODEFAULTLIB:library LNK4098 的解决办法

您试图与不兼容的库链接。

注意

运行时库现在包含可防止混合不同类型的指令。如果试图在同一个程序中使用不同类型的运行时库或使用调试和非调试版本的运行时库,则将收到此警告。例如,如 果编译一个文件以使用一种运行时库,而编译另一个文件以使用另一种运行时库(例如单线程运行时库对多线程运行时库),并试图链接它们,则将得到此警告。应 将所有源文件编译为使用同一个运行时库。有关更多信息,请参见使用运行时库(/MD、/MT 和 /LD)编译器选项。

可以使用链接器的 /VERBOSE:LIB 开关来确定链接器搜索的库。如果收到 LNK4098,并想创建使用如单线程、非调试运行时库的可执行文件,请使用 /VERBOSE:LIB 选项确定链接器搜索的库。链接器作为搜索的库输出的应是 LIBC.lib,而非 LIBCMT.lib、MSVCRT.lib、LIBCD.lib、LIBCMTD.lib 和 MSVCRTD.lib。对每个要忽略的库可以使用 /NODEFAULTLIB,以通知链接器忽略错误的运行时库。

下表显示根据要使用的运行时库应忽略的库。

若要使用第一行运行时库    请忽略第2行的这些库

单线程 (libc.lib)

libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

多线程 (libcmt.lib)

libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

使用 DLL 的多线程 (msvcrt.lib)

libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

调试单线程 (libcd.lib)

libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib

调试多线程 (libcmtd.lib)

libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib

使用 DLL 的调试多线程 (msvcrtd.lib)

libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib

例如,如果收到此警告,并希望创建使用非调试、单线程版本的运行时库的可执行文件,可以将下列选项与链接器一起使用:

/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pgmsoul/archive/2009/05/20/4203941.aspx

 

回复 (0) | 27 次阅读

编辑 | 删除 C++ call Fortran lib

oml_the_nameless_one 发布于:

 转载:http://blog.sina.com.cn/s/blog_6798850f0101daea.html

已知: 主程序的所有C++源代码
        静态库的所有Fortran源代码
工具: Compiler: MS Visual C++ 2010(x86)
        Compiler: Intel Visual Fortran 2011(x86) ,即IVF 12
        IDE: Microsoft Visual Studio 2010

问题: C++代码中需要调用Fortran子程序,由于Visual Studio已不含Fortran编译器,所以无法混合编译,只有先将Fortran代码编译成静态库,再从C++代码中调用。问题是Fortran子程序可以顺利编译成静态库(.lib文件),但在C++工程中却不能调用,总是提示“无法解析的外部符号 _XXX,该符号在函数 _XX 中被引用”。

 

    刚遇到这个问题时,百度Google一下,发现仅有的一点参考信息来自

    http://bbs.sjtu.edu.cn/bbstcon?board=VS&reid=1292155137
    但是,很遗憾,按照这位中国哥哥的提示,还是不行,仍然提示“无法解析的外部符号 _XXX,该符号在函数 _XX 中被引用”。于是继续Google,发现老外专家的回答,硬着头皮看完,OK,问题解决,现总结如下:

    1.针对Fortran子程序 Subroutine ffun 的声明,一般都是按照如下格式声明

                  extern "C" void __stdcall FFUN(int& i);   //FFUN要大写

      然后按照 FFUN(a)使用,这也是彭国伦Fortran95程序设计书中教的方法,这种操作在VC6.0中可以正常使用,但是在VS2010中却不行,在VS2010中声明为__stdcall的话,FFUN会被编译成 FFUN@4 ,而 Fortran 中被编译成FFUN,所以仍然提示“无法解析的外部符号FFUN@4,该符号在函数 _XX 中被引用”,如果声明为__cdecl或直接省略这部分声明的话,就不存在这个问题,所以VS2010中不能再将 Fortran 子程序声明为 __stdcall,而是声明为

                    extern "C" void FFUN(int *a);

    2.Different runtime library specified for C and Fortran project - these must be consistent

           You can change the Runtime Library settings in BOTH projects to be "Multithreaded" (not Multithreaded DLL) and it should do what you want.

              什么意思?编译Fortran静态库时,要设置工程->属性->c/c++->代码生成->运行库为多线程调试(Debug下),而不是多线程调试DLL。同时,在调用Fortran静态库的C++工程中,也要做同样的设置才行。

         3.libifcoremt.lib explicitly listed as an additional dependency in C project - remove
             msvcrt.lib listed as "ignore" in C project - remove

            编译时有时会出现“无法打开文件ifconsol.lib ”等一些情况,这时需要添加库路径和附加依赖项解决。有时还会提示库冲突,中国哥哥的解决方法是从项目中排除默认的库,可是如果都做了“运行库为多线程调试”的设置,基本上不会出现这种问题,而且老外明确表示要去掉忽视的库(msvcrt.lib listed as "ignore" in C project - remove)。

回复 (0) | 32 次阅读

编辑 | 删除 光学厚度-光辐射透过的程度

oml_the_nameless_one 发布于:

 气溶胶厚度是表征对某一波长光辐射的透过率的参数,光学厚度越大,其光辐射透过的程度越低。

回复 (0) | 204 次阅读

编辑 | 删除 【转】FLUENT中的辐射模型

oml_the_nameless_one 发布于:

 

【转】FLUENT中的辐射模型

1、FLUENT中需要考虑热辐射的情况

(1)火焰辐射热传递

(2)表面对表面的辐射加热或冷却

(3)辐射、对流和导热耦合传热

(4)HVAC应用中透过窗户的热辐射,以及汽车工业中车厢内的模拟

(5)玻璃加工、玻璃纤维拉拔及陶瓷加工过程中的辐射

2、FLUENT中的辐射模型

主要有5种辐射模型:DTRM模型、P1模型、Rosseland模型、P1模型、S2S模型

3、DTRM模型的优势及限制

优势:(1)模型较为简单(2)可以通过增加射线数量来提高计算精度(3)可以用于光学深度非常广的情况下。

限制:(1)假定所有表面都是散射的。意味着表面的入射辐射是关于入射角各向同性反射的。(2)不包括散射效应。(3)基于灰体辐射假定。(4)对于大数目的射线问题,非常耗费CPU时间。(5)不能与非共形交界面或滑移网格同时使用。(6)不能用于并行计算中。

4、P1模型的优势及限制

优势:(1)辐射模型为一个扩散方程,求解需要较少的CPU时间。(2)考虑了扩散效应。(3)对于光学深度比较大(如燃烧应用中),P-1模型表现非常好。(4)P-1模型使用曲线坐标很容易处理复杂几何

限制:(1)假定所有的表面均为散射。(2)基于灰体辐射假定。(3)在光学深度很小时,可能会丧失精度。(4)倾向于预测局部热源或接收器的辐射通量。

5、Rosseland辐射模型的优势及限制

优势:相对于P-1模型,它不求解额外的关于入射辐射的传输方程,因此比P-1模型计算要快,且更节省内存。

限制:只能用于光学深度比较大的情况,推荐用于光学深度大于3的情况下;不能用于密度基求解器。

6、DO模型的优势及限制

DO模型能够求解所有光学深度区间的辐射问题;能求解燃烧问题中的面对面辐射问题,内存和计算开销都比较适中。

DO模型能用于计算半透明介质辐射。

7、S2S辐射模型

非常适用于封闭空间中没有介质的辐射问题(如航天器的排热系统、太阳能收集系统、辐射供热装置等)。

限 制:(1)假定所有表面均为散射的。(2)灰体辐射假设。(3)内存和存储量需求在表面增加时,增长得非常快。(4)不能用于participating radiation问题。(5)不能用于存在周期边界的模型中。(6)不能用于存在对称边界问题中。(7)不支持非共形交界面、悬挂节点或网格自适应中。

8、适用情况

DTRM模型与DO模型可以适用于所有光学深度问题,P-1模型适用于光学深度1~3的情况,Rosseland模型适用于光学深度大于3的情况,S2S辐射模型适用于真空中辐射模拟。

回复 (0) | 4512 次阅读

编辑 | 删除 右键菜单清除

oml_the_nameless_one 发布于:

 以Windows XP(SP2)为例,有些右键菜单中的选项你并不常用,或者有些软件已被删除,但其仍然占据着右键菜单。要删除这些无用的右键菜单项,操作步骤如下

  运行regedit打开注册表编辑器。展开[HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers]分支,找到要删除的无用项,然后根据关键字删除需要清除的右键菜单项即可。对于仅在文件夹右键菜单中才有的选项,可到[HKEY_CLASSES_ROOT\Direclory\shell]和[HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers]分支下查找。有时[IHKEY_CLASSES_ROOT\Folder\shell]和[HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers]分支下也有右键菜单中的选项。最好使用组合键“Ctrl+F”,在查找对话框中输入要删除的菜单中的关键字,找到后删除即可。  经过以上操作,右键菜单清爽多了吧!

回复 (0) | 4 次阅读

编辑 | 删除 四维单纯形

oml 发布于:

 这是它在三维空间的投影,很酷啊,但是很难理解。

 

转自维基百科

回复 (0) | 13 次阅读

编辑 | 删除 loop macro

oml 发布于:

1. begin, end_c_loop macro is used for looping over all the cells in particular thread for serial processing.

2. For parallel processing, the cells inside a partition can be categorized as interior and exterior cells.

3. The macros begin, end_c_loop_int; begin, end_c_loop_ext and begin, end_c_loop_all are used for looping over interior, exterior and all the cells (in a partition) respectively.

4. In parallel simulations, both begin, end_c_loop and begin, end_c_loop_all macros will do the same job.

5. For faces the looping macro in parallel are begin, end_f_loop_int; begin, end_f_loop_ext and begin, end_f_loop for looping over interior, boundary and all faces respectively. For all practical purpose, the user need not separate the interior and boundary faces of a partition. Hence, begin, end_f_loop_int and begin, end_f_loop_ext macros are rarely used.

 

Please refer to section 10.5.5 of Fluent 6.2 User's guide for more information.

回复 (0) | 75 次阅读

oml_the_nameless_one (西安)

男 

日志分类

我的所有分类(629)

tec(10)

日志最新回复

弱智

匿名匿名

2020-03-14 19:31

弱智

匿名匿名

2020-02-29 19:11

剧透一时爽,全家火葬

匿名匿名

2018-05-02 20:44