Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. OpenFOAM libtorch tutorial step by step

OpenFOAM libtorch tutorial step by step

已定时 已固定 已锁定 已移动 OpenFOAM
77 帖子 16 发布者 56.6k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #40

    我在这发的代码你可以理解是伪代码(纯粹我个人做记录用的)。有基础的话改一改就可以了。如果基础不好,这个需要重新学openfoam然后再看。

    关于你的问题,我记得我的代码里面没有用fvc,你应该是包含了一些自己写的东西在里面,然后出现了这个报错。

    这个代码不需要做CFD求解。这是监督学习只需要提供特征与标签。特征与标签是CFD单独计算出来的,不在求解器层面去计算。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    leaonL 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #41
        Info<< "mesh size: " << mesh.C().size() << nl;                                                   
        int cellNum = mesh.C().size();                                                                   
    
        vectorField uCell = U.field();                                                                   
        
        auto a = torch::zeros({cellNum, 2});
            
        for (int i = 0; i < cellNum; i++)                                                                
        {   
            a[i][0] = uCell[i].x();
            a[i][1] = uCell[i].y();
        };                                                                                               
        
        std::cout<< "a:" << a << std::endl;   
    

    上面的代码可以把OpenFOAM的U场存储到a中

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • leaonL 离线
    leaonL 离线
    leaon
    在 中回复了 李东岳 最后由 编辑
    #42

    @李东岳
    谢谢你,把solver.H 改成“fvCFD.H”就少了很多错误。不知道是不是与版本有关,这里用的是v2312版本。
    还剩余一个错误:scalarField P1internal = P[1].primitiveField();
    d5459c64-7696-44a5-8978-54b560e48231-image.png

    CFD是个什么鬼?!

    李东岳李 D 2 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 leaon 最后由 编辑
    #43

    @leaon http://dyfluid.com/code.html

    参考这里,声明一个场进去

    volScalarField T//体心场
    (
        IOobject
        (
            "T",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        mesh
    );
    

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 李东岳 编辑
    #44

    代码越来越复杂。这是执行一系列的卷积、池化操作等输出的8个通道的流场结果:

    http://dyfluid.com/cnn.html#id6

    捕获.JPG

    下图是自编码器进行重组的流场:

    cnnreal.JPG

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 李东岳李 李东岳 被引用 于这个主题
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #45

    如果要保存模型。声明网络的时候,要用智能指针的形式:

    //NN net;
    auto net = std::make_shared<NN>();
    

    上面第一行正常用不保存模型的话啥问题没有。但是如果要torch::save,只能用第二行的形式,否则编译不通过。

    https://github.com/pytorch/pytorch/issues/15777

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #46

    https://download.pytorch.org/libtorch/cu118 gpu版本的libtorch下载地址

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #47

    https://github.com/pytorch/pytorch/blob/c0ff08577570c23694eb0e8b8750564847daccc2/test/cpp/api/parallel.cpp#L230-L293

    libtorch多GPU并行编译可以参考这个

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 小 离线
    小 离线
    小泽同学
    在 中回复了 李东岳 最后由 编辑
    #48

    @李东岳 李老师您好,我用的of是4.1版本的,按照您的最上面的教程走,发现也是torchFoam编译不了,如下图
    860c6edd-babd-4515-8c7e-b7031dd958fd-QQ_1724054024615.png
    想请问一下老版本的libtorch也是去官网下载吗,我的这个好像是不太支持c++14,就只支持c++11,请问怎么配置好libtorch呢,谢谢李老师了。

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #49

    openfoam + libtorch需要互相匹配。openfoam4这个版本太低了。为啥不升级到8 9 10 11 12类似的呢

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    小 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #50

    一个libtorch下自编码器范例

    可以自己添加skip connection变成Unet

    class NN
    :
        public torch::nn::Module 
    {
        torch::nn::Sequential net_;
    
    public:
    
        NN()
        {
            net_ = register_module
            (
                "net", 
                torch::nn::Sequential
                (
                    // encoder
                    torch::nn::Conv2d(2, 5, 3),// 2 5 138
                    torch::nn::BatchNorm2d(5),
                    torch::nn::Tanh(),
                    torch::nn::MaxPool2d(2),// 2 5 69
                    torch::nn::Conv2d(5, 10, 3), //5 10 67
                    torch::nn::BatchNorm2d(10),
                    torch::nn::Tanh(),
                    torch::nn::MaxPool2d(2), // 5 10 33
                    torch::nn::Conv2d(10, 10, 3), // 10 10 31
                    torch::nn::BatchNorm2d(10),
                    torch::nn::Tanh(),
                    torch::nn::MaxPool2d(2), // 10 10 15
                    torch::nn::Conv2d(10, 10, 3), // 10 10 13
                    torch::nn::BatchNorm2d(10),
                    torch::nn::Tanh(),
                    torch::nn::MaxPool2d(2), // 10 10 6
    
                    // decoder
                    torch::nn::Upsample
                    (
                        torch::nn::UpsampleOptions().scale_factor
                        (
                            std::vector<double>{2.0, 2.0}
                        ).mode(torch::kBilinear).align_corners(true)
                    ), // 10 10 12
                    torch::nn::Conv2d(10, 10, 2), // 10 10 11
                    torch::nn::Tanh(),
                    torch::nn::Upsample
                    (
                        torch::nn::UpsampleOptions().scale_factor
                        (
                            std::vector<double>{2.0, 2.0}
                        ).mode(torch::kBilinear).align_corners(true)
                    ),// 10 10 22
                    torch::nn::Conv2d(10, 10, 3),// 10 10 20
                    torch::nn::Tanh(),
                    torch::nn::Upsample
                    (
                        torch::nn::UpsampleOptions().scale_factor
                        (
                            std::vector<double>{2.0, 2.0}
                        ).mode(torch::kBilinear).align_corners(true)
                    ),// 10 10 40
                    torch::nn::Conv2d(10, 10, 3),// 10 10 38
                    torch::nn::Tanh(),
                    torch::nn::Upsample
                    (
                        torch::nn::UpsampleOptions().scale_factor
                        (
                            std::vector<double>{2.0, 2.0}
                        ).mode(torch::kBilinear).align_corners(true)
                    ),// 10 10 76
                    torch::nn::Conv2d(10, 10, 3),// 10 10 74
                    torch::nn::Tanh(),
                    torch::nn::Upsample
                    (
                        torch::nn::UpsampleOptions().scale_factor
                        (
                            std::vector<double>{2.0, 2.0}
                        ).mode(torch::kBilinear).align_corners(true)
                    ),// 10 10 148
                    torch::nn::Conv2d(10, 10, 3),// 10 10 146
                    torch::nn::Tanh(),
                    torch::nn::Conv2d(10, 5, 3),// 10 10 144
                    torch::nn::Tanh(),
                    torch::nn::Conv2d(5, 2, 3),// 10 10 142
                    torch::nn::Tanh(),
                    torch::nn::Conv2d(2, 2, 3)// 10 10 140
                )
            );
        }
    
        auto forward(torch::Tensor x)
        {
            return net_->forward(x);
        }
    };
    

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 小 离线
    小 离线
    小泽同学
    在 中回复了 李东岳 最后由 编辑
    #51

    @李东岳 感谢李老师,明白需要配合版本使用,不升级是因为课题组在做的求解器模型是从4.1开始的,我也在高版本上运行过,但是总是报错就只能用4.1了,感谢李老师的回复。

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #52

    你可以尝试把openfoam低版本的求解器升级到高版本。

    如果没兴趣不整也行。或者马上毕业了也属实没必要。这东西基本是兴趣驱动。。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 火 离线
    火 离线
    火丙三金
    写于 最后由 编辑
    #53

    请问各位有没有用pytorch的

    1 条回复 最后回复
  • Z 离线
    Z 离线
    Zhy2022
    写于 最后由 编辑
    #54

    想请问李老师:我使用全系列虚拟机(您已提前配置好),再运行第6步这个简单例子,报错未找到torchFoam这个命令,是啥原因造成的呢:135: 编译过程中有很多warning和note应该不影响吧

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #55

    warning note不影响,把你log上传一下看看

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    Zhy2022
    在 中回复了 李东岳 最后由 编辑
    #56

    @李东岳 李老师,问题解决了,是我把option文件改错了个地方。。新的问题又来了,我在OF11中(仍是该虚拟机)对bed案例进行foamRun或foamRun -solver multiphaseEuler时,为何报错:```
    --> FOAM FATAL ERROR:
    solvers table is empty

    From function static Foam::autoPtr<Foam::solver> Foam::solver::New(const Foam::word&, Foam::fvMesh&)
    in file solver/solverNew.C at line 48.
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #57

    openfoam11直接运行foamRun就行了,不需要指定solver

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    Zhy2022
    在 中回复了 李东岳 最后由 编辑
    #58

    @李东岳 李老师,直接foamRun还是报一样的错误

    1 条回复 最后回复
  • hurricane007H 离线
    hurricane007H 离线
    hurricane007
    写于 最后由 编辑
    #59

    添加几点注意

    1. 第一步libtorch需要下载到OpenFOAM的目录里面并解压。
    2. 第二步WSL2 里面可能没装 uzip,用 sudo apt-install zip uzip 安装
    3. 解压torchFoam.tar.xz 后进入torchFoam wmake 的时候,需要把 torchFoam/Make 里面的options里面所有的dyfluid换成自己的这个WSL的用户名,pwd一下看/home/后面是啥就知道了
    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]