Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

    约束器constrain的实现

    OpenFOAM
    1
    1
    108
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 王
      王金成 last edited by

      在约束器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 Reply Last reply Reply Quote
      • First post
        Last post

      CFD中文网 | 东岳流体 | 京ICP备15017992号-2