Skip to content
Snippets Groups Projects
Commit 3c3cf51f authored by Mark OLESEN's avatar Mark OLESEN
Browse files

ENH: improve, simplify coordinateSystem handling (issue #863)

- coordinate systems now simply represent a transformation
  (translation, rotation) that is uniform for all positions,
  with a much reduced number of methods. The dictionary entries
  generated for the coordinate systems and rotations are now
  usable as input as well.

- new coordinateSystem setRotation() method to assist with changing
  just the rotation matrix (issue #879)

- A new cylindricalTransform class for the special case of applying
  cylindrical coordinate transformations that are position-dependent.
  This transformation definition is uses a reference to a pointField
  or an indirect pointField and is intended to be used on demand.
  (See DarcyForchheimer.C for an example of use).

- added coordinateRotations namespace for better organization and
  reduce potential name clashes.

- Streamline dictionary input requirements.

  * The default type is cartesian.
  * The default rotation type is the commonly used axes rotation
    specification, which is assumed if the coordinateRotation
    sub-dictionary does not exist.

    Example,

    Compact specification:

        coordinateSystem
        {
            origin  (0 0 0);
            e2      (0 1 0);
            e3      (0.5 0 0.866025);
        }

    Full specification:

        coordinateSystem
        {
            type    cartesian;
            origin  (0 0 0);

            coordinateRotation
            {
                type    axes;
                e2      (0 1 0);
                e3      (0.5 0 0.866025);
            }
        }

- Additional rotation specification 'none' (an identity rotation):

        coordinateSystem
        {
            origin  (0 0 0);
            coordinateRotation { type none; }
        }

- Additional rotation specification 'axisAngle', which is similar
  to the -rotate-angle option for transforming points (issue #660).
  For some cases this can be more intuitive.

  For example,

      coordinateRotation
      {
          type    axisAngle;
          axis    (0 1 0);
          angle   30;
      }
  vs.
      coordinateRotation
      {
          type    axes;
          e2      (0 1 0);
          e3      (0.5 0 0.866025);
      }
parent 778c091e
No related merge requests found
Showing
with 468 additions and 134 deletions
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment