pointMotionU和pointDisplacement这些控制动网格节点的边界条件文件的数据类型是pointVectorField,对应的patch类是Foam::pointPatch而不是Foam::fvPatch,这应该就是报错的根本原因。
我的思路如下:
// 获取pointPatch的ID,它和相同边界上的fvPatch的ID是一致的 label patchIndex = patch().index(); // 在objectRegistry随意获取一个存在的物理场 const volScalarField & p ( this->db().objectRegistry::lookupObject<volScalarField>("p"); ); // 从上述物理场中访问fvMesh中的体心/面心场 const vectorField& Cfp = p.mesh().Cf().boundaryField()[patchIndex];