Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
定义了一个矢量,类型为dimensionedVector,=网格坐标*vector(1,0,0)。发现mesh.c()是一个scalerField,所以编译就报错“error: conversion from ‘Foam::tmp<Foam::GeometricField....". mesh.c()这里应该如何修改?
fvMesh::C()返回的是一个矢量场,而不是一个矢量(dimensionedVector)
const Foam::volVectorField& Foam::fvMesh::C() const { if (!CPtr_) { makeC(); } return *CPtr_; }
@史浩 那怎么才能得到网格xyz坐标的标量值?
@danao 这个矢量场中,每一个矢量的三个分量就是网格中心的x、y、z值
@史浩 mesh.C().component(0),是这个吗?我试了好像还是volVectorField 类型,而不是一个scalar
@danao 你说的方法也可以,不过我没有用过,你试一下可以写一下这个函数的用法,我也学习一下。 我个人比较喜欢用是[]运算符,类似于这样
forAll(mesh.C(), celli) { Scalar x = mesh.C()[celli].x(); }
@danao 在 如何获得网格坐标? 中说:
而不是一个scalar
网格坐标不就是个vector么?
@danao 不知道你的最终目的是什么,如果就是为了获得网格坐标,paraview里就可以吧
@Dingcy 我要编写源项,公式里需要网格坐标xyz的值
@史浩 我试了,提示[celli]没声明,后来我用的mesh.C().component(0),这个是个volScalarField 类型,有单位m
@东岳 是的,我要用到坐标三个方向的具体数值,标量