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. 约束器constrain的实现

约束器constrain的实现

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

    在约束器Foam::fvConstraints::constrain的定义中有:

    (这里以输入为eqn的定义为例)

    template<class Type>
    bool Foam::fvConstraints::constrain(fvMatrix<Type>& eqn) const
    {
        checkApplied();
    
        const PtrListDictionary<fvConstraint>& constraintList(*this);
    
        bool constrained = false;
    
        forAll(constraintList, i)
        {
            const fvConstraint& constraint = constraintList[i];//对象constraint源于类fvConstraint
    
            if (constraint.constrainsField(eqn.psi().name()))
            {
                constrainedFields_[i].insert(eqn.psi().name());
    
                if (debug)
                {
                    Info<< "Applying constraint " << constraint.name()
                        << " to field " << eqn.psi().name() << endl;
                }
    
                constrained =//这里调用了对象constraint的constrain方法
                    constraint.constrain(eqn, eqn.psi().name()) || constrained;
            }
        }
    
        return constrained;
    }
    

    注意到,其中constrain方法所引用的是对象constraint,而对象constraint​源于​类fvConstraint​。但是,我目前在类fvConstraint​没有找到关于​constrain方法的定义,
    实际上,我对整个代码进行了搜索遍历,寻找包含两个输入对象的constrain方法,与类fvConstraint有关的,仅有fvConstraint头文件中定义的​​fvConstraintM.H​。
    但是其如何被类fvConstraint​继承无法看得出来,因为该类没有父类。为因此想请教一下大家这个方法的定义及其由来,以及其是如何在代码里实现的。​

    1 条回复 最后回复

  • 登录

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