Commit Graph

475 Commits

Author SHA1 Message Date
cee3dab140 TUT: cleanup compressible tutorials
- for all tutorial cases:
     - correct/uniformize dict-style
     - rm redundant dict entries

 - compressible.overRhoPimpleDyMFoam.twoSimpleRotors: rm redundant file: pointDisplacement
 - compressible.overRhoSimpleFoam.hotCylinder
 - compressible.rhoCentralDyMFoam.movingCone
 - compressible.rhoCentralFoam.forwardStep: activate purgeWrite=10
 - compressible.rhoCentralFoam.LadenburgJet60psi: rm redundant files: mapFieldsDict & sample
 - compressible.rhoCentralFoam.shockTube: rm redundant file: sample; command: cleanSample
 - compressible.rhoPimpleFoam.laminar.sineWaveDamping: rm redundant file: V; activate purgeWrite=10
 - compressible.rhoPimpleFoam.LES.pitzDaily: activate purgeWrite=10
 - compressible.rhoPimpleFoam.RAS.aerofoilNACA0012: activate purgeWrite=10
 - compressible.rhoPimpleFoam.RAS.angledDuct: add Allclean
 - compressible.rhoPimpleFoam.RAS.mixerVessel2D: add Allclean; rm makeMesh
 - compressible.rhoPimpleFoam.RAS.angledDuctLTS: add Allclean
 - compressible.rhoPimpleFoam.RAS.TJunctionAverage
 - compressible.rhoPorousSimpleFoam.angledDuct
 - compressible.rhoSimpleFoam.aerofoilNACA0012
 - compressible.rhoSimpleFoam.angledDuctExplicitFixedCoeff
 - compressible.rhoSimpleFoam.squareBend
 - compressible.rhoSimpleFoam.gasMixing.injectorPipe
 - compressible.sonicDyMFoam.movingCone: rm redundant file: cuttingPlane
 - compressible.sonicFoam.laminar.shockTube
 - compressible.sonicFoam.RAS.nacaAirfoil
 - compressible.sonicFoam.RAS.prism
2020-01-29 12:26:36 +00:00
f55da4b690 ENH: allow datToFoam writing points dict directly
- refactors the corresponding tutorial by removing redundant files and items:
    compressible/rhoCentralFoam/biconic25-55Run35
2020-01-29 12:26:36 +00:00
596e4aef3f STYLE: remove trailing space, tabs 2020-01-22 10:00:03 +01:00
b0072bfab8 ENH: regIOobject store() now also registers the object
- previously the store() method just set the ownedByRegistry flag.
  Now ensure that it is indeed registered first.

- support register/store of tmp<> items.
  The tmp parameter is not cleared, but changed from PTR to CREF
  to allow further use.

  The implicit registration allows code simplification using the
  GeometricField::New factory method, for example.

  Old Code
  ========
      volScalarField* ptr = new volScalarField
      (
          IOobject
          (
              fieldName,
              mesh.time().timeName(),
              mesh,
              IOobject::NO_READ,
              IOobject::NO_WRITE,
              true  // Register
          ),
          mesh,
          dimless,
          zeroGradientFvPatchField<scalar>::typeName
      );
      ptr->store();

  New Code
  ========
      auto tptr = volScalarField::New
      (
          fieldName,
          mesh,
          dimless,
          zeroGradientFvPatchField<scalar>::typeName
      );
      regIOobject::store(tptr);

  or even
      regIOobject::store
      (
          volScalarField::New
          (
              fieldName,
              mesh,
              dimless,
              zeroGradientFvPatchField<scalar>::typeName
          )
      );
2020-01-13 15:37:25 +00:00
152890d288 TUT: change residuals FO remnants to solverInfo FO (#1290) 2020-01-10 09:44:38 +00:00
ae2ab06312 REL: Release preparations 2019-12-23 09:49:23 +00:00
6ce3e0bd67 BUG: expression BCs missing their variables on output 2019-12-13 15:49:25 +01:00
44304e07d6 TUT: simple tutorial with expression boundary conditions and setExprFields 2019-12-10 13:09:22 +01:00
98467036b3 STYLE: regularize quoting and exit on failed 'cd' 2019-11-13 13:19:16 +01:00
46d7db79aa TUT: consistent calling of m4 2019-11-06 11:50:42 +01:00
e6dfb39c66 STYLE: remove unnecessary stdout, stderr /dev/null redirects
- no stderr redirect needed:
    * 'command -v'

- no stdout/stderr redirect needed:
    * 'rm -f'

STYLE: consistent spacing after redirects
2019-11-06 10:44:36 +01:00
ec7e3c88e4 ENH: test for WM_PROJECT_DIR being set/unset in scripts 2019-11-06 09:18:51 +01:00
93422f1a72 TUT: use simpler syntax for motionSolverLibs entries 2019-10-01 10:58:53 +02:00
3625d0ecd1 TUT: remove duplicate ;; in dictionaries 2019-10-01 10:39:40 +02:00
fc461a1cc6 TUT: use writeControl "adjustable" (alias for "adjustableRunTime") 2019-09-27 15:50:06 +02:00
880d81475b TUT: use simpler syntax for libs entries 2019-08-30 16:45:45 +02:00
2ca4792734 TUT: add coded example for sampling cellZoneId (#1383) 2019-08-21 12:13:51 +02:00
be44dcaf1f RELEASE: Version clean-up for release 2019-06-25 11:51:19 +01:00
1b2708226e TUT: Tutorial updates 2019-06-25 09:59:20 +01:00
12afb3d34a ENH: Refactored pressure function object 2019-06-19 09:00:14 +01:00
0d8601f273 TUT: rhoSimpleFoam/squareBend - added example use of isentropic pressure 2019-06-06 12:18:10 +01:00
cbc3953f26 Revert "BUG: snappyHexMesh: attraction distance mapping. Fixes #941."
This reverts commit 708e650990.
2019-04-10 10:32:18 +01:00
7cd40afa3a BUG: snappyHexMesh: attraction distance mapping. Fixes #941. 2019-04-08 13:19:41 +01:00
9cd72b2bb8 BUG: uniformFixedValue: fix tutorials. See #1046. 2019-04-04 09:24:42 +01:00
49ba6a8e94 ENH: Updating overRhoSimpleFoam and overSimpleFoam to use
oversetInterpolationSuppressed dict.
2019-04-03 12:55:33 -07:00
33edea3ea4 ENH: add directory support for foamCleanTutorials 2019-02-23 19:59:04 +01:00
03e6aa1a6d ENH: replace surfMesh/fields support with polySurface/fields support (#1206)
- fits better into the general sampling framework, improves flexibilty
  and allows code reduction.

ENH: include surface fields on sampledSurfaces that support it
2019-02-12 13:54:02 +01:00
966fc4c503 TUT: add missing fields 2019-02-12 16:46:40 +01:00
c137d3f823 ENH: derivedFields functionObject to create some predefined, calculated fields
- currently supports pTotal, rhoU.
2019-02-08 17:47:45 +01:00
1e607ac62e TUT: use coarser grid for gasMixing tutorial and run in parallel 2019-02-08 18:43:08 +01:00
1c85c64984 STYLE: clarify input requirements for extrusion models (#1181)
- changed the sectorCoeffs keyword to 'point' from 'axisPt'
  for more similarity with other dictionaries.
  Continue to accept 'axisPt' for compatibility.
2019-01-24 09:40:12 +01:00
9231534efa STYLE: Updating version to v1812 2018-12-19 18:07:52 +00:00
db8ba80ae4 TUT: update old keywords 2018-12-14 11:20:31 +01:00
9103b199b9 TUT: remove unused default decomposition coeffs settings 2018-12-13 14:04:50 +01:00
00ec58a141 ENH: extend flexibility of abort function object (#1119)
- Now also responds to the contents of the trigger file,
  processing action= contents similar to used with external coupling.

  Previously it only handled an action that was defined in the
  dictionary. With this update, the user can chose a diferent action
  simply by echoing the appropriate action string into the trigger
  file.
2018-12-12 15:39:49 +01:00
98158f5409 TUT: add End marker for tutorials 2018-12-11 16:25:28 +01:00
550e47629b ENH: configurable output temperature for externalCoupled mixed T BC (#1072)
- Uses the user-specified value for outputTemperature:

  {
      type  externalCoupledTemperature;
      outputTemperture  fluid;  // or wall;
  }

  Otherwises uses 'wall' as a default (for compatibility) and emits a
  warning.

  The T.out header now reflects the type of output. Eg,

     # Values: area Tfluid qDot htc
2018-12-02 17:35:48 +01:00
1116ba803a TUT: use defaultPatch for naming instead of explicit Default_Boundary_Region
- tutorials based on squareBend used Default_Boundary_Region explicitly
  defined since they predated the defaultPatch renaming (2008).
  The name 'Default_Boundary_Region' was for convenience as the default
  name when converting to PROSTAR or CCM formation, but can now be
  changed to something more generic.

- define wall boundary conditions for squareBend using a general regex
  to allow future splitting of wall types by name.
2018-12-02 11:14:04 +01:00
0d29257a6d STYLE: use vtk::surfaceWriter instead of sampleSurface version 2018-10-16 14:49:56 +02:00
5f556ffb4a ENH: make sourceInfo sub-dictionary optional for topoSet (#1060)
- helps reduce clutter in the topoSetDict files.

  Caveats when using this.

  The older specification styles using "name" will conflict with the
  set name. Eg,

    {
        name    f0
        type    faceSet;
        action  add;
        source  patchToFace;
        sourceInfo
        {
            name   inlet;
        }
    }

    would flattened to the following
    {
        name    f0
        type    faceSet;
        action  add;
        source  patchToFace;
        name   inlet;
    }
    which overwrites the "name" used for the faceSet.

    The solution is to use the updated syntax:

    {
        name    f0
        type    faceSet;
        action  add;
        source  patchToFace;
        patch   inlet;
    }
2018-11-07 10:33:36 +01:00
7325e3ac7d ENH: topoSetSource::SUBTRACT enum action (#1060)
- old 'DELETE' enum was easily confused with 'REMOVE', which removes
  the set, not the elements from the set.

- provide corresponding subtractSet() method

STYLE: HashSet set/unset instead of insert/erase methods in topoSetSource

- simplifies switching to/from bitSet storage
2018-10-30 15:09:44 +00:00
6e9520d3c1 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2018-10-17 10:29:34 -07:00
5daa38d5b4 ENH:
Update of overRhoPimpleDyMFoam and overInterDyMFoam solvers.
Adding corresponding tutorials with best possible settings
The main effort was put on reducing pressure spikes as the
stencil change with hole cells on the background mesh.
2018-10-17 10:10:06 -07:00
8fabc32539 ENH: simplify objectRegistry access names (issue #322)
New name:  findObject(), cfindObject()
  Old name:  lookupObjectPtr()

      Return a const pointer or nullptr on failure.

  New name:  findObject()
  Old name:  --

      Return a non-const pointer or nullptr on failure.

  New name:  getObjectPtr()
  Old name:  lookupObjectRefPtr()

      Return a non-const pointer or nullptr on failure.
      Can be called on a const object and it will perform a
      const_cast.

- use these updated names and functionality in more places

NB: The older methods names are deprecated, but continue to be defined.
2018-10-17 16:44:10 +02:00
6697bb4735 ENH: improve, simplify, rationalize coordinate system handling (issue #863)
Previously the coordinate system functionality was split between
coordinateSystem and coordinateRotation. The coordinateRotation stored
the rotation tensor and handled all tensor transformations.

The functionality has now been revised and consolidated into the
coordinateSystem classes. The sole purpose of coordinateRotation
is now just to provide a selectable mechanism of how to define the
rotation tensor (eg, axis-angle, euler angles, local axes) for user
input, but after providing the appropriate rotation tensor it has
no further influence on the transformations.

--

The coordinateSystem class now contains an origin and a base rotation
tensor directly and various transformation methods.

  - The origin represents the "shift" for a local coordinate system.

  - The base rotation tensor represents the "tilt" or orientation
    of the local coordinate system in general (eg, for mapping
    positions), but may require position-dependent tensors when
    transforming vectors and tensors.

For some coordinate systems (currently the cylindrical coordinate system),
the rotation tensor required for rotating a vector or tensor is
position-dependent.

The new coordinateSystem and its derivates (cartesian, cylindrical,
indirect) now provide a uniform() method to define if the rotation
tensor is position dependent/independent.

The coordinateSystem transform and invTransform methods are now
available in two-parameter forms for obtaining position-dependent
rotation tensors. Eg,

      ... = cs.transform(globalPt, someVector);

In some cases it can be useful to use query uniform() to avoid
storage of redundant values.

      if (cs.uniform())
      {
          vector xx = cs.transform(someVector);
      }
      else
      {
          List<vector> xx = cs.transform(manyPoints, someVector);
      }

Support transform/invTransform for common data types:
   (scalar, vector, sphericalTensor, symmTensor, tensor).

====================
  Breaking Changes
====================

- These changes to coordinate systems and rotations may represent
  a breaking change for existing user coding.

- Relocating the rotation tensor into coordinateSystem itself means
  that the coordinate system 'R()' method now returns the rotation
  directly instead of the coordinateRotation. The method name 'R()'
  was chosen for consistency with other low-level entities (eg,
  quaternion).

  The following changes will be needed in coding:

      Old:  tensor rot = cs.R().R();
      New:  tensor rot = cs.R();

      Old:  cs.R().transform(...);
      New:  cs.transform(...);

  Accessing the runTime selectable coordinateRotation
  has moved to the rotation() method:

      Old:  Info<< "Rotation input: " << cs.R() << nl;
      New:  Info<< "Rotation input: " << cs.rotation() << nl;

- Naming consistency changes may also cause code to break.

      Old:  transformVector()
      New:  transformPrincipal()

  The old method name transformTensor() now simply becomes transform().

====================
  New methods
====================

For operations requiring caching of the coordinate rotations, the
'R()' method can be used with multiple input points:

       tensorField rots(cs.R(somePoints));

   and later

       Foam::transformList(rots, someVectors);

The rotation() method can also be used to change the rotation tensor
via a new coordinateRotation definition (issue #879).

The new methods transformPoint/invTransformPoint provide
transformations with an origin offset using Cartesian for both local
and global points. These can be used to determine the local position
based on the origin/rotation without interpreting it as a r-theta-z
value, for example.

================
  Input format
================

- Streamline dictionary input requirements

  * The default type is cartesian.
  * The default rotation type is the commonly used axes rotation
    specification (with e1/e2/3), which is assumed if the 'rotation'
    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 (also accepts the longer 'coordinateRotation'
    sub-dictionary name):

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

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

   This simplifies the input for many cases.

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

      coordinateSystem
      {
          origin  (0 0 0);
          rotation { 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,

      rotation
      {
          type    axisAngle;
          axis    (0 1 0);
          angle   30;
      }
  vs.
      rotation
      {
          type    axes;
          e2      (0 1 0);
          e3      (0.5 0 0.866025);
      }

- shorter names (or older longer names) for the coordinate rotation
  specification.

     euler         EulerRotation
     starcd        STARCDRotation
     axes          axesRotation

================
  Coding Style
================
- use Foam::coordSystem namespace for categories of coordinate systems
  (cartesian, cylindrical, indirect). This reduces potential name
  clashes and makes a clearer declaration. Eg,

      coordSystem::cartesian csys_;

  The older names (eg, cartesianCS, etc) remain available via typedefs.

- added coordinateRotations namespace for better organization and
  reduce potential name clashes.
2018-10-01 13:54:10 +02:00
47519b2e04 ENH: new sampling type "surfaceCut"
- an alternative to distanceSurface (with distance zero) that uses
  a cell cutting approach instead of an iso-surface.
2018-09-18 08:40:46 +02:00
4aa94bd1d7 ENH: improve distanceSurface handling (issue #1012)
- 'signed' input parameter only mandatory for distance > 0.
  A distance <= 0 is always signed and the input parameter is ignored.

- Use normal distance when distance == 0. This has no effect when
  the surface has no open edges, but improves on rounding issues
  around the zero crossing when the surface has open edges.

  This may still need future revisiting.
2018-09-19 14:18:57 +02:00
da74e872f4 STYLE: overset: remove unused dictionary entry 2018-08-09 17:39:22 +01:00
7bb68b4dea ENH: new cuttingPlane cutting scheme
- takes a direct approach of determining which cells are cut and walks
  the cell faces directly to build the resulting surface.

- better handling of corner cases.
  * Avoids redundant points when the cut passes exactly through a
    mesh point.
  * Supresses generation of duplicates faces when the plane cut
    coincides exactly with a mesh face.

- for severely concave cells where the plane cuts a face multiple times
  there is currently no remedial action taken, except to note the
  failure and unwind the insertion of the corresponding points and
  faces.
2018-08-07 22:23:16 +02:00
712f49758a TUT: update snappy dictionaries to use minMedialAxisAngle
- canonical parameter name changed from "minMedianAxisAngle" to
  "minMedialAxisAngle" (DEC-2013), but was never previously reported
  as having changed.
2018-07-18 16:47:34 +02:00