软件开发公司

软件软件开发多少钱 OpenFOAM编程案例|02 方法参数

发布日期:2024-08-09 08:07    点击次数:84
软件软件开发多少钱

本文演示愚弄OpenFOAM中的argList类为创建的方法构造号召参数。

从提供的argc和argv参数中索求号召参数和选项。如底下的号召推论方式:

program -listFiles \(*.txt\)

号召中,program为号召的称呼,listFiles及\(*.txt\)均为号召的参数。本案例的蓄意即为构造梗概佩戴参数的应用方法。

1 文献准备

本案例的文献结构如前边的案例疏导。

经受底下的号召创建文献与文献夹。

cd $FOAM_RUNmkdir demo2cd demo2touch demo2.Cmkdir Makecd Maketouch files optionscd ..

文献组织结构如下图所示。

图片

修改files文献的本体
demo2.CEXE = demo2
修改options文献的本体
EXE_INC = \        -I$(FOAM_SRC)/finiteVolume/lnInclude \        -I$(FOAM_SRC)/meshTools/lnInclude EXE_LIBS = \        -lfiniteVolume \        -lmeshTools
2 添加参数

裁剪源代码deom2.C,如下所示。

#include <fvCFD.H> int main(int argc, char *argv[]){    // 界说方法的使用讲明    argList::addNote(        "输入参数:\n"        "---------------------\n"        "参数1:someWord\n"        "参数2:someScalar\n");    // 构建参数    Foam::argList args(argc, argv);    return 0;}

这段代码很浅易,编译开动如下图所示。

图片

不错看到上头的浅易代码为方法添加了匡助文档,不错通过方法名后头带参数-help来检验。

底下连续完善代码,为方法添加两个参数。

#include <fvCFD.H> int main(int argc, char *argv[]){    // 界说方法的使用讲明    argList::addNote(        "输入参数:\n"        "---------------------\n"        "参数1:someWord\n"        "参数2:someScalar\n");     // 准备参数列表    argList::noParallel();    argList::validArgs.append("someWord");    argList::validArgs.append("someScalar");     Foam::argList args(argc, argv);     // 读取参数    const word someWord = args[1];                     //第一个参数    //原始方法,新版块将argRead函数毁灭了,改用get函数    // const scalar someScalar = args.argRead<scalar>(2);    const scalar someScalar = args.get<scalar>(2); //第二个参数     Info << "赢得参数:" << endl        << "someWord:" << someWord << endl        << "someScalar:" << someScalar << endl;     return 0;}

编译开动如下图所示。

图片

领导需要输入两个参数。将开动号召改成./demo2 hello 2,如下图所示,不错看到方法告成开动。

图片

3 添加选项

不错为方法添加可选参数。如下代码。

    #include <fvCFD.H> int main(int argc, char *argv[]){        // 界说方法的使用讲明    argList::addNote(                "输入参数:\n"                "---------------------\n"                "参数1:someWord\n"                "参数2:someScalar\n");         // 准备参数列表    argList::noParallel();    argList::validArgs.append("someWord");    argList::validArgs.append("someScalar");         // 加多一个选项参数,调用方式为-dict word        // 参数步骤为:选项名、参数、使用讲明    argList::addOption(                "dict",                "word",                "零散的字典旅途(非面前旅途):");         // 加多一个布尔选项,调用模式为-someSwitch    argList::addBoolOption(                    "someSwitch",                    "从A切换到B");         // 加多一个整数选项,调用模式为-someInt label    argList::addOption(                    "someInt",                    "label"                    "可选整数");         // 创建一个参数对象args        Foam::argList args(argc, argv);         // 读取参数someWord及someScalar        const word someWord = args[1];                 //第一个参数        const scalar someScalar = args.get<scalar>(2); //第二个参数             // 输出参数信息    Info << "赢得参数:" << endl         << "someWord:" << someWord << endl         << "someScalar:" << someScalar << endl;         // 读取选项-dict的信息        fileName dictPath("defaultDict");        if (args.found("dict"))    {        args.readIfPresent("dict", dictPath);        Info << "赢得一个字典旅途" << nl;    }    Info << "从字典文献:[" << dictPath << "]中读取字典" << endl;         // 读取布尔选项信息,并输出信息        const bool someConstBool = args.found("someSwitch");    Info << "开关建树为:" << someConstBool << endl;         // 读取整x选项参数并输出参数值        label someInt(0);    args.readIfPresent("someInt", someInt);    Info << "整数选项值:" << someInt << endl;    Info << "-------End-------" << endl;         return 0;}

着重参数是必选的,可选参数不错不选。

编译后输入底下的号召./demo2 hello 2 -dict defaultDict1 -someSwitch -someInt 2,开动如下图所示。这里号召参数是敷衍输入的,仅为演示。

山东泰山入籍国脚费南多“三停”的事情有了最新进展,软件开发价格有消息称“小摩托”续约的条件是大幅上涨薪资,没有得到泰山俱乐部的回应,他有意转投上海申花。

[扫码下载app,中过数字彩1千万以上的专家都在这儿!]

图片

着重可选参数不错不选,如底下的号召./demo2 hello 2 -dict defaultDict1 -someSwitch。

图片

况兼可选参数的位置不错松驰挪动,如下图为号召./demo2 hello 2 -dict defaultDict1 -someInt 3 -someSwitch的开动成果。

图片

小程序开发

可选参数还不错放到必选参数的前边,如开动号召./demo2 -someInt 3 hello 3,成果如下图所示。

图片

着重,源文献中读参数函数也曾修改为最新OpenFOAM所接济的函数,被替换的函数如下表所示。

老版块函数(被毁灭)新版块函数optionFoundfoundoptionReadIfPresentreadIfPresent

被毁灭的函数现在依然不错使用,仅仅在编译流程中会有申饬信息,不淡薄使用老版块函数,除了更复杂之外,还很有可能在将来更高的版块中被澈底死一火。

(本文方法在OpenFOAM 2112下开动通过。在V9版块下需要进行小幅修改。厉害淡薄手撸代码,因此文中的源代码就不提供了。)

(结束)

本站仅提供存储事业,通盘本体均由用户发布,如发现存害或侵权本体,请点击举报。

上一篇:软件软件开发多少钱 社保交15年、20年、25年,没思到退休金区别这样大!保藏起来望望
下一篇:软件开发价格 刊行限制再增50%,熊猫债捏续扩容