ok!经过一系列的铺垫,我们来尝试一下提取出openFOAM中的chemFoam程序的源码,然后用Makefile编译运行一下,这样可以帮助我们进行二次开发。

呃。。。这个怎么说呢。。。openFOAM一个单独算例的程序依赖深度超过我的预期了。首先程序编译的过程是有记录的,保存如下路径下的文件:

dyfluid@dyfluid:~/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/applications/solvers/combustion/chemFoam$ vim chemFoam.C.dep

打开后内容如下:

$(OBJECTS_DIR)/chemFoam.C.dep: \
chemFoam.C \
$(WM_PROJECT_DIR)/src/finiteVolume/lnInclude/fvCFD.H \
$(WM_PROJECT_DIR)/src/thermophysicalModels/reactionThermo/lnInclude/rhoReactionThermo.H \
$(WM_PROJECT_DIR)/src/thermophysicalModels/chemistryModel/lnInclude/BasicChemistryModel.H \
$(WM_PROJECT_DIR)/src/thermophysicalModels/reactionThermo/lnInclude/reactingMixture.H \
$(WM_PROJECT_DIR)/src/thermophysicalModels/chemistryModel/lnInclude/chemistrySolver.H \
$(WM_PROJECT_DIR)/src/OpenFOAM/lnInclude/OFstream.H \
$(WM_PROJECT_DIR)/src/thermophysicalModels/specie/lnInclude/thermoPhysicsTypes.H \
$(WM_PROJECT_DIR)/src/thermophysicalModels/reactionThermo/lnInclude/basicSpecieMixture.H \
...

这个文件足足一千多行,记录了所有的编译依赖。我们观察一下程序的正文,chemFoam.C:

/*---------------------------------------------------------------------------*\=========                 |\\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox\\    /   O peration     | Website:  https://openfoam.org\\  /    A nd           | Copyright (C) 2011-2018 OpenFOAM Foundation\\/     M anipulation  |
-------------------------------------------------------------------------------
LicenseThis file is part of OpenFOAM.OpenFOAM is free software: you can redistribute it and/or modify itunder the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.OpenFOAM is distributed in the hope that it will be useful, but WITHOUTANY WARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public Licensefor more details.You should have received a copy of the GNU General Public Licensealong with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.ApplicationchemFoamDescriptionSolver for chemistry problems, designed for use on single cell cases toprovide comparison against other chemistry solvers, that uses a single cellmesh, and fields created from the initial conditions.\*---------------------------------------------------------------------------*/#include "fvCFD.H"               //finiteVolume/lnInclude
#include "rhoReactionThermo.H"  //reactionThermo/lnInclude
#include "BasicChemistryModel.H" //chemistryModel/lnInclude
#include "reactingMixture.H"    //reactionThermo/lnInclude
#include "chemistrySolver.H"     //chemistryModel/lnInclude
#include "OFstream.H"            //OpenFOAM/lnIncldue
#include "thermoPhysicsTypes.H" //specie/lnInclude
#include "basicSpecieMixture.H" //reactionThermo/lnInclude
#include "cellModeller.H"        //OpenFOAM/lnIncldue
#include "thermoTypeFunctions.H" //current dir// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{argList::noParallel();#define CREATE_MESH createSingleCellMesh.H#define NO_CONTROL#include "postProcess.H"  //OpenFOAM/lnInclude#include "setRootCaseLists.H"    //OpenFOAM/lnIncldue#include "createTime.H"          //OpenFOAM/lnIncldue#include "createSingleCellMesh.H" //current dir#include "createFields.H"     //current dir#include "createFieldRefs.H"  //current dir#include "readInitialConditions.H" //current dir#include "createControls.H"        //current dir// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //Info<< "\nStarting time loop\n" << endl;while (runTime.run()){#include "readControls.H" //current dir#include "setDeltaT.H" //current dirrunTime++;Info<< "Time = " << runTime.timeName() << nl << endl;#include "solveChemistry.H" //current dir#include "YEqn.H"   //current dir#include "hEqn.H"   //current dir#include "pEqn.H"   //current dir#include "output.H" //current dirInfo<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"<< "  ClockTime = " << runTime.elapsedClockTime() << " s"<< nl << endl;}Info << "Number of steps = " << runTime.timeIndex() << endl;Info << "End" << nl << endl;return 0;
}// ************************************************************************* //

啊我这里本来非常天真的标记了每个头文件的路径,以为只有这些头文件。但是实际上,这些头文件中还会使用其他的头文件。最终总体使用的头文件总数还是很多的。预计总计有几万行的程序规模。

不过虽然多,但并不是完全没有规律,也并不是需要用到所有的源代码。需要使用的头文件只出现在如下几个文件夹中。

~/OpenFOAM/OpenFOAM-7/src/OpenFOAM
~/OpenFOAM/OpenFOAM-7/src/ODE
~/OpenFOAM/OpenFOAM-7/src/thermophysicalModels/basic
~/OpenFOAM/OpenFOAM-7/src/thermophysicalModels/specie
~/OpenFOAM/OpenFOAM-7/src/thermophysicalModels/chemistryModel
~/OpenFOAM/OpenFOAM-7/src/thermophysicalModels/reactionThermo
~/OpenFOAM/OpenFOAM-7/src/meshTools
~/OpenFOAM/OpenFOAM-7/src/finiteVolume
~/OpenFOAM/OpenFOAM-7/src/transportModels/compressible/

啊当然这也不少了,而且这个里面也并不是全部会用。另外,这里的文件夹中有一个规律,就是所有的代码都会出现两份,第一份分别放在各个文件夹中,表示各自的功能,然后最终所有的代码都会复制到同一个文件夹lnInclude中,例如ODE文件夹中的内容如下:

dyfluid@dyfluid:~/OpenFOAM/OpenFOAM-7/src/ODE$ ls
lnInclude  Make  ODESolvers  ODESystem

理论上我们将所有文件夹中的lnInclude都添加到chemFoam目录中,就可以不修改路径的直接编译执行。

OK!那这个阶段算是勉强的完成了吧。

chemFoam的源码提取相关推荐

  1. vue代码可以反编译吗_微信小程序源码提取反编译

    一.前言 微信小程序源码提取反编译,听起来很屌,其实还是简单的,基本是傻瓜式操作.要想拿到微信小程序源码,找到源文件在手机存放的位置就行,源文件拿到,用反编译脚本跑一下,微信小程序代码包里的所有文件. ...

  2. 小程序源码提取工具 完美解包,最新脚本,一键提取小程序源代码工具

    小程序源码提取工具 完美解包,最新脚本,一键提取小程序源代码工具 小程序解包工具,具体功能请百度一下,解码后直接换掉人家的地址就OK 那么如何才能在手机里找到小程序的源文件包呢? 具体目录位置直接给出 ...

  3. python源码提取_Python|第一个python程序(获取音乐下载地址,附源码)

    至少我们曾经在一起过. 来自:一言 软件截图 软件说明: 刚刚开始接触python,做出一个这样的软件,很low.附上源码, 希望大佬可以指点指点,正在琢磨怎么把音乐下载下来... 软件源码 impo ...

  4. 根据PC端telegram源码提取出来的Qt文本显示代码

    最近在做一个聊天软件,是用Qt开发,消息显示是一个比较重要的部分,经过几次尝试发现Qt的默认控件都没有现成的能够实现复制.选中效果.链接.显示表情和图片等的控件,后面发现telegram的PC端也是用 ...

  5. 软著申请说明 源码提取工具类

    拷贝文献 不想看可以直接略过 申请须知 1. 申请人可以自己办理计算机软件著作权登记,也可以委托代理机构办理登记.     2. 申请人应当将所提交的申请文件留存一份,便于在补正程序中保持文件内容的一 ...

  6. c传给php数据解包,小程序源码提取工具,完美解包,一键提取小程序源代码工具_PHP源码...

    请注意:该源码来源网友分享,搜库资源网不提供技术支持,没有技术能力的小白勿拍.(如需安装服务费用另算) 直接解压后就可以使用 将小程序文件放到 wxapkg目录下 然后打开 CrackMinApp.e ...

  7. 微信小程序源码提取与反编译爬坑

    前言 没必要说太多,基本上操作是没有什么难度的,这里说一些我遇到的问题与解决方式.首先测试小程序,由于他不像是web,是不能通过查看源代码的方式来查看js代码的,所以需要手动的将小程序源码拿出来,然后 ...

  8. python源码提取_Python提取Linux内核源代码的目录结构实现方法

    今天用Python提取了Linux内核源代码的目录树结构,没有怎么写过脚本程序,我居然折腾了2个小时,先是如何枚举出给定目录下的所有文件和文件夹,os.walk可以实现列举,但是os.walk是只给出 ...

  9. 小程序源码提取工具_小程序一款高效的视频声音提取和识别工具!

    编注:小程序系列面向正在使用Android.iOS.iPad OS.PC.Mac平台设备的朋友.无需单独下载App,在微信中直接打开就可以使用,即用即走,帮你更高效的完成一些事情! 给大家推荐一款高效 ...

最新文章

  1. 行集函数:OpenRowSet 和 OpenQuery
  2. 12星座男生最吃哪一套
  3. Qt Creator添加编译器
  4. 支持所有库的python手机编程-入坑 Python 后强烈推荐的一套工具库
  5. Git笔记(31) 重置揭密
  6. springmvc 全局编码_SpringMVC请求参数和响应结果全局加密和解密
  7. nexttick使用场景_Vue -- nextTick
  8. [转载] vscode python导入模块
  9. [vue-router] Duplicate named routes definition
  10. 51Nod 1117 - 聪明的木匠(贪心)
  11. 丢手帕问题 (约瑟夫问题)Java实现
  12. LIBAVCODEC_VERSION_INT是哪里定义的?
  13. DXperience 12.2使用手册
  14. 带你快速读懂ITIL4
  15. 一级计算机考试电子表格排序筛选,重新应用Excel排序和筛选或清除筛选
  16. 大家看看这样可以生成SPWM波吗
  17. darts.h注释 - 滴水穿石 - 歪酷博客 Ycool Blog
  18. mysql启动集群报连接本地失败_Docker的mysql集群节点可以正常创建,但无法正常连接到宿主机的mysql应该如何解决?...
  19. 你会刷牙吗?图解正确刷牙方法
  20. pion/ion搭建

热门文章

  1. 做抖音新启一个账号,第一步要做什么事情?
  2. 微信小程序利用scroll-view和swiper实现图片滚动切换
  3. Windows窗口程序运行过程
  4. mac 挂载linux分区命令,mac os 挂载 读linux 文件系统 xfs ext4
  5. 4.5k star,一款开源的数据可视化分析平台,提供多种大屏模板,非常炫酷
  6. python3*1**3 表达式输出结果为_下列 Python语句的输出结果是?
  7. 欧拉角与万向锁—深度解读万向锁
  8. IAR右键无法跳转问题的两种解决方法
  9. 沉浸式状态栏(修改状态栏)颜色的简单实现
  10. 英美大学IB分数要求多少?