View Issue Details

IDProjectCategoryView StatusLast Update
0003232OpenFOAMFeaturepublic2019-07-10 11:39
ReportergskillasAssigned Towill 
PrioritynormalSeverityfeatureReproducibilityN/A
Status resolvedResolutionfixed 
PlatformLinuxOSOpenSUSE LeapOS Version15.0
Product Versiondev 
Fixed in Versiondev 
Summary0003232: change blockMesh arc specification
DescriptionHello Henry

using 'arc' in blockMeshDict is quite tedious, since it requires computing a point on the arc.
In most cases it would be much easier to specify the centre of the circle, or a point within
the circle and the radius.

Syntax now:

arc 0 1 (1 2 3)

Proposed syntax:

arc 0 1 c (1 2 3) // Coordinates of the circle centre
arc 0 1 p (1 2 3) // Coordinates of a point on the circle (equivalent to present syntax)
arc 0 1 pr (1 2 3 50) // Point in circle and circle radius

Best regards,

George
TagsNo tags attached.

Activities

henry

2019-05-08 22:15

manager   ~0010452

The first two specification are OK but the last one is a bit odd, under what conditions would this be convenient?

gskillas

2019-05-09 07:44

reporter   ~0010453

Yes, at first this sounds weird. However the specification of many tank bottoms use with curvatures (giving radii/diameters) without centres.

will

2019-05-09 09:17

manager   ~0010454

The third is a better specification, too, as it avoids an issue with the second potentially not being consistent. If in the second, the given centre is not the same distance from the two end points, then the arc is not well defined.

Point-in-circle and radius doesn't have this problem, though it does have a different issue. If the given point-in-circle is on the line between the end points then the arc can't be calculated. That's probably less likely to be an issue than getting the centre in the wrong place.

Alternatively, you could have circle-plane-normal and radius. That wouldn't have either issue.

will

2019-07-10 11:39

manager   ~0010553

After quite a lot of thought, I concluded that the best alternative specification is actually arc-angle and axis. Radius and axis isn't so good because it can't distinguish between major and minor arcs. Arc-angle and axis can, and still has the property that the user will probably just know what the values are off the top of their head without having to calculate anything.

The disadvantage is that the user could specify an axis which isn't perpendicular to the edge. In this case the arc gets some axial length and becomes a helix. This might seem a bit odd, but it's a well defined shape that tends to an arc as the axis becomes perpendicular to the edge, and behaves sensibly in all other limits and edge cases that I can think of.

I've put this in dev with the following syntax:

    arc <vertex-0> <vertex-1> <angle> (<axis-x> <axis-y> <axis-z>)

The angle comes first, so we can determine which form is being used just by the presence of the open-bracket after the vertex labels.

https://github.com/OpenFOAM/OpenFOAM-dev/commit/73d253c34b3e184802efb316f996f244cc795ec6

Issue History

Date Modified Username Field Change
2019-05-08 21:45 gskillas New Issue
2019-05-08 22:15 henry Note Added: 0010452
2019-05-09 07:44 gskillas Note Added: 0010453
2019-05-09 09:17 will Note Added: 0010454
2019-07-10 11:39 will Assigned To => will
2019-07-10 11:39 will Status new => resolved
2019-07-10 11:39 will Resolution open => fixed
2019-07-10 11:39 will Fixed in Version => dev
2019-07-10 11:39 will Note Added: 0010553