OpenFOAM-topoSet
创建时间: 2020-05-19 22:46:39
摘要: 本文总结OpenFOAM中topoSet相关的内容
备注
本文基于OF版本:(Waller)OpenFOAM v6
topoSet
doxygen手册中的定义:
General set of labels of mesh quantity (points, cells, faces).
即 网格数量(点、单元、面)的常规标签集。
topoSetDict
对应的字典配置文件:topoSetDict。以$FOAM_ETC/caseDicts/mesh/manipulation/refineRegion/topoSetDict为例:
17 actions
18 (
19 {
20 name c0; // 集合的名称
21 type cellSet; // 集合的类型
22 action new; // 作用在集合上的动作
23 source boxToCell;
24 sourceInfo
25 {
26 box (-1 -1 -1) (1 1 1); // Edit box bounds as required
27 }
28 }
29 );
可以看出,相关操作都放到actions(...)中。
相关参数的具体信息可以参考字典文件:/opt/openfoam6/etc/caseDicts/annotated/topoSetDict。
name为集合的名称;
type为集合的类型;
action为作用到集合上的动作,可以分为需要source与不需要source:
require source: clear/invert/remove
clear清除set或zoneinvert选择所有当前没有被选择的部分remove移除set或zone
require source: new/add/delete/subset
new从source创建新的set或zoneadd将source添加到当前内容中delete从当前内容中删除sourcesubset保留既在当前内容中,也在source中的部分(交集)
source的内容根据set类型的不同而有所不同。
cellSet
labelToCell
通过显式地指定网格的label来选择
// Select by explicitly providing cell labels
source labelToCell;
sourceInfo
{
value (12 13 56); // labels of cells
}
cellToCell
从cellSet复制
// Copy elements from cellSet
source cellToCell;
sourceInfo
{
set c1;
}
zoneToCell
在网格zone中的网格
// Cells in cell zone
source zoneToCell;
sourceInfo
{
name ".*Zone"; // Name of cellZone, regular expressions allowed
}
faceZoneToCell
选择faceZone中的master或slave网格
// Cells on master or slave side of faceZone
source faceZoneToCell;
sourceInfo
{
name ".*Zone"; // Name of faceZone, regular expressions allowed
option master; // master/slave
}
faceToCell
基于faceSet选择
// Select based on faceSet
source faceToCell;
sourceInfo
{
set f0; // Name of faceSet
// option neighbour; // cell with neighbour in faceSet
// option owner; // ,, owner
option any; // cell with any face in faceSet
// option all; // cell with all faces in faceSet
}
pointToCell
基于pointSet选择
// Select based on pointSet
source pointToCell;
sourceInfo
{
set p0;
option any; // cell with any point in pointSet
// option edge; // cell with an edge with both points in pointSet
}
shapeToCell
基于cellShape选择
// Select based on cellShape
source shapeToCell;
sourceInfo
{
type hex; // hex/wedge/prism/pyr/tet/tetWedge/splitHex
}
boxToCell
选择网格中心在box或多个boxs内的网格
// Cells with cell centre within box ('box') or multiple boxes ('boxes')
source boxToCell;
sourceInfo
{
box (0 0 0) (1 1 1);
// boxes ((0 0 0) (1 1 1) (10 10 10)(11 11 11));
}
rotatedBoxToCell
选择网格中心在box内的网格:指定原点和三个方向
// Cells with cell centre within box
// Is skewed, rotated box. Given as origin and three spanning vectors.
source rotatedBoxToCell;
sourceInfo
{
origin (0.2 0.2 -10);
i (0.2 0.2 0);
j (-0.2 0.2 0);
k (10 10 10);
}
cylinderToCell
选择网格网格中心在圆柱内的网格
// Cells with centre within cylinder
source cylinderToCell;
sourceInfo
{
p1 (0.2 0.2 -10); // start point on cylinder axis
p2 (0.2 0.2 0); // end point on cylinder axis
radius 5.0;
}
sphereToCell
选择网格中心在球内的网格
// Cells with centre within sphere
source sphereToCell;
sourceInfo
{
centre (0.2 0.2 -10);
radius 5.0;
}
nearestToCell
选择距离坐标点最近的网格
// Cells with cellCentre nearest to coordinates
source nearestToCell;
sourceInfo
{
points ((0 0 0) (1 1 1)(2 2 2));
}
surfaceToCell
基于面选择网格
// Select based on surface
source surfaceToCell;
sourceInfo
{
file "www.avl.com-geometry.stl";
useSurfaceOrientation false; // use closed surface inside/outside
// test (ignores includeCut,
// outsidePoints)
outsidePoints ((-99 -99 -59)); // definition of outside
includeCut false; // cells cut by surface
includeInside false; // cells not on outside of surf
includeOutside false; // cells on outside of surf
nearDistance -1; // cells with centre near surf
// (set to -1 if not used)
curvature 0.9; // cells within nearDistance
// and near surf curvature
// (set to -100 if not used)
}
fieldToCell
选择场值在特定范围的网格
// values of field within certain range
source fieldToCell;
sourceInfo
{
fieldName U; // Note: uses mag(U) since volVectorField
min 0.1;
max 0.5;
}
regionToCell
网格区域
// Mesh region (non-face connected part of (subset of)mesh)
source regionToCell;
sourceInfo
{
set c0; // optional name of cellSet giving mesh subset
insidePoints ((1 2 3)); // points inside region to select
nErode 0; // optional number of layers to erode
// selection
}
targetVolumeToCell
指定目标体积
// Cells underneath plane such that volume is reached. E.g. for use
// in setFields to set the level given a wanted volume.
source targetVolumeToCell;
sourceInfo
{
volume 2e-05;
normal (0 1 0); // usually in direction of gravity
}
faceSet
faceToFace
// Copy elements from faceSet
source faceToFace;
sourceInfo
{
set f1;
}
cellToFace
// Select based on cellSet
source cellToFace;
sourceInfo
{
set c0;
option all; // All faces of cells
// option both; // Only faces whose owner&neighbour are in cellSet
}
pointToFace
// Select based on pointSet
source pointToFace;
sourceInfo
{
set p0;
option any; // Faces using any point in pointSet
// option all // Faces with all points in pointSet
// option edge // Faces with two consecutive points in pointSet
}
labelToFace
// Select by explicitly providing face labels
source labelToFace;
sourceInfo
{
value (12 13 56); // labels of faces
}
patchToFace
// All faces of patch
source patchToFace;
sourceInfo
{
name ".*Wall"; // Name of patch or patch group,
// (regular expressions allowed)
}
boundaryToFace
// All boundary faces
source boundaryToFace;
sourceInfo
{
}
zoneToFace
// All faces of faceZone
source zoneToFace;
sourceInfo
{
name ".*Zone1"; // Name of faceZone, regular expressions allowed
}
boxToFace
// Faces with face centre within box ('box') or multiple boxes ('boxes')
source boxToFace;
sourceInfo
{
box (0 0 0) (1 1 1);
// boxes ((0 0 0) (1 1 1) (10 10 10)(11 11 11));
}
normalToFace
// Faces with normal to within certain angle aligned with vector.
source normalToFace;
sourceInfo
{
normal (0 0 1); // Vector
cos 0.01; // Tolerance (max cos of angle)
}
regionToFace
// Walk on faces in faceSet, starting from face nearest given position
source regionToFace;
sourceInfo
{
set f0;
nearPoint (0.1 0.1 0.005);
}
pointSet
pointToPoint
// Copy elements from pointSet
source pointToPoint;
sourceInfo
{
set p1;
}
cellToPoint
// Select based on cellSet
source cellToPoint;
sourceInfo
{
set c0;
option all; // all points of cell
}
faceToPoint
// Select based on faceSet
source faceToPoint;
sourceInfo
{
set f0; // name of faceSet
option all; // all points of face
}
labelToPoint
// Select by explicitly providing point labels
source labelToPoint;
sourceInfo
{
value (12 13 56); // labels of points
}
zoneToPoint
// All points in pointzone
source zoneToPoint;
sourceInfo
{
name ".*Zone"; // name of pointZone, regular expressions allowed
}
nearestToPoint
// Points nearest to coordinates
source nearestToPoint;
sourceInfo
{
points ((0 0 0) (1 1 1));
}
boxToPoint
// Points with coordinate within box ('box') or multiple boxes ('boxes')
source boxToPoint;
sourceInfo
{
box (0 0 0) (1 1 1);
// boxes ((0 0 0) (1 1 1) (10 10 10)(11 11 11));
}
surfaceToPoint
// Select based on surface
source surfaceToPoint;
sourceInfo
{
file "www.avl.com-geometry.stl";
nearDistance 0.1; // points near to surface
includeInside false; // points on inside of surface
// (requires closed surface with consistent
// normals)
includeOutside false; // ,, outside ,,
}
cellZoneSet
Manipulates a cellZone (as well as a cellSet) Takes any cellSet source. The difference with a cellSet is
reads the cells from the cellZone, not the cellSet
write to the cellZone as well as the cellSet
For backwards compatibility:
// Select based on cellSet
source setToCellZone;
sourceInfo
{
set c0; // name of cellSet
}
faceZoneSet
Manipulates a faceZone (as well as a faceSet). It can only be used with two special sources:
// Select based on faceSet without orientation
source setToFaceZone;
sourceInfo
{
faceSet f0; // name of faceSet
}
// Select based on faceSet, using cellSet to determine orientation
source setsToFaceZone;
sourceInfo
{
faceSet f0; // name of faceSet
cellSet c0; // name of cellSet of slave side
flip false; // optional: flip the faceZone (so now the cellSet
// is the master side)
}
// Select based on surface. Orientation from normals on surface
{
name fz0;
type faceZoneSet;
action new;
source searchableSurfaceToFaceZone;
sourceInfo
{
surface searchableSphere;
centre (0.05 0.05 0.005);
radius 0.025;
// name sphere.stl; // Optional name if surface triSurfaceMesh
}
}
pointZoneSet
Manipulates a pointZone (as well as a pointSet) Takes any pointSet source. The difference with a pointSet is
reads the cells from the pointZone, not the pointSet
write to the pointZone as well as the pointSet
For backwards compatibility:
// Select based on pointSet
source setToPointZone;
sourceInfo
{
set p0; // name of pointSet
}
参数列表
相关参数可用的值可以通过banana method得知:
type关键字可用的值为:cellSet cellZoneSet faceSet faceZoneSet pointSet pointZoneSet
action关键字可用的值为:clear invert remove list subset new delete add
source关键字可用的值为:boundaryToFace boxToCell boxToFace boxToPoint cellToCell cellToFace cellToPoint cylinderAnnulusToCell cylinderAnnulusToFace cylinderToCell cylinderToFace faceToCell faceToFace faceToPoint faceZoneToCell faceZoneToFaceZone fieldToCell labelToCell labelToFace labelToPoint nbrToCell nearestToCell nearestToPoint normalToFace patchToFace pointToCell pointToFace pointToPoint regionToCell regionToFace rotatedBoxToCell searchableSurfaceToFaceZone setAndNormalToFaceZone setToCellZone setToFaceZone setToPointZone setsToFaceZone shapeToCell sphereToCell surfaceToCell surfaceToPoint targetVolumeToCell zoneToCell zoneToFace zoneToPoint