001-从“hello world”谈起
001-从“hello world”谈起
因为我也是在学习的过程,我用的OpenFOAM版本是2.3.x,实测大部分API在OpenFOAM3.0版本中并没有太大改动,所有程序均通过Wmake调试
程序的解释是对原有的程序进行注释结合,比较懒就不想把程序一段一段分开了,默认面向的读者均具有一定的C++基础,对面向对象编程有一定了解
知道指针、重载、派生、友元之类的基础知识,如果不会可以先看一下C++ 教程 | 菜鸟教程,同时推荐一下Essential C++,都是非常好的C++入门教程
本质上OpenFOAM用到的C++并不是很多,甚至可以当作一门“类似”于C++的新编程语言来学,下面就开始吧~
/*------------------------- OFtutorials0.C ----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the 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 WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
int main(int argc, char *argv[])
{
// Checks the basic folder structure, verifies there is a control dict present, etc.;
// also deals with parsing command line arguments and options.
// It works by taking an external piece of code, written in $FOAM_SRC/OpenFOAM/include.
// The contents of the include file actually look like this:
/*Foam::argList args(argc, argv); - deciphers the arguments passed to the program
if (!args.checkRootCase()) - verifies the folder structure
{
Foam::FatalError.exit();
}*/
#include "setRootCase.H"
// OpenFOAM screen output is very similar to rudimentary C++ with its std::cout, std::nl and std::endl
// being replaced with Foam::Info, Foam::nl, and Foam::endl.
/*
Info 类似于C++中的cout,nl=endl,本质上
Foam::Info, Foam::nl, Foam::endl就是对C++中
std::cout, std:endl的派生
*/
Info << "Hello there, I'm an OpenFOAM program!" << nl
<< "You don't need a mesh or anything to run it, just a bare OpenFOAM case will do." << nl
<< tab << "This is me again, just creating a tabulated new line, move along." << nl << endl;
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)