Skip to content
Snippets Groups Projects
  1. Nov 13, 2017
  2. Nov 08, 2017
  3. Nov 07, 2017
  4. Sep 22, 2017
    • Henry Weller's avatar
      Rationalize the "pos" function · ae277fd1
      Henry Weller authored and Andrew Heather's avatar Andrew Heather committed
      "pos" now returns 1 if the argument is greater than 0, otherwise it returns 0.
      This is consistent with the common mathematical definition of the "pos" function:
      
      https://en.wikipedia.org/wiki/Sign_(mathematics)
      
      However the previous implementation in which 1 was also returned for a 0
      argument is useful in many situations so the "pos0" has been added which returns
      1 if the argument is greater or equal to 0.  Additionally the "neg0" has been
      added which returns 1 if if the argument is less than or equal to 0.
      ae277fd1
  5. Jul 10, 2017
  6. Jul 06, 2017
  7. May 31, 2017
  8. May 24, 2017
  9. May 19, 2017
  10. Apr 27, 2017
  11. Apr 20, 2017
    • Henry Weller's avatar
      The "<type>Coeffs" sub-dictionary is now optional for most model parameters · 9801c257
      Henry Weller authored
      except turbulence and lagrangian which will also be updated shortly.
      
      For example in the nonNewtonianIcoFoam offsetCylinder tutorial the viscosity
      model coefficients may be specified in the corresponding "<type>Coeffs"
      sub-dictionary:
      
      transportModel  CrossPowerLaw;
      
      CrossPowerLawCoeffs
      {
          nu0         [0 2 -1 0 0 0 0]  0.01;
          nuInf       [0 2 -1 0 0 0 0]  10;
          m           [0 0 1 0 0 0 0]   0.4;
          n           [0 0 0 0 0 0 0]   3;
      }
      
      BirdCarreauCoeffs
      {
          nu0         [0 2 -1 0 0 0 0]  1e-06;
          nuInf       [0 2 -1 0 0 0 0]  1e-06;
          k           [0 0 1 0 0 0 0]   0;
          n           [0 0 0 0 0 0 0]   1;
      }
      
      which allows a quick change between models, or using the simpler
      
      transportModel  CrossPowerLaw;
      
      nu0         [0 2 -1 0 0 0 0]  0.01;
      nuInf       [0 2 -1 0 0 0 0]  10;
      m           [0 0 1 0 0 0 0]   0.4;
      n           [0 0 0 0 0 0 0]   3;
      
      if quick switching between models is not required.
      
      To support this more convenient parameter specification the inconsistent
      specification of seedSampleSet in the streamLine and wallBoundedStreamLine
      functionObjects had to be corrected from
      
          // Seeding method.
          seedSampleSet   uniform;  //cloud; //triSurfaceMeshPointSet;
      
          uniformCoeffs
          {
              type        uniform;
              axis        x;  //distance;
      
              // Note: tracks slightly offset so as not to be on a face
              start       (-1.001 -0.05 0.0011);
              end         (-1.001 -0.05 1.0011);
              nPoints     20;
          }
      
      to the simpler
      
          // Seeding method.
          seedSampleSet
          {
              type        uniform;
              axis        x;  //distance;
      
              // Note: tracks slightly offset so as not to be on a face
              start       (-1.001 -0.05 0.0011);
              end         (-1.001 -0.05 1.0011);
              nPoints     20;
          }
      
      which also support the "<type>Coeffs" form
      
          // Seeding method.
          seedSampleSet
          {
              type        uniform;
      
              uniformCoeffs
              {
                  axis        x;  //distance;
      
                  // Note: tracks slightly offset so as not to be on a face
                  start       (-1.001 -0.05 0.0011);
                  end         (-1.001 -0.05 1.0011);
                  nPoints     20;
              }
          }
      9801c257
  12. Jan 17, 2017
    • Henry Weller's avatar
      Multi-phase solvers: Improved handling of inflow/outflow BCs in MULES · ad92287a
      Henry Weller authored
      Avoids slight phase-fraction unboundedness at entertainment BCs and improved
      robustness.
      
      Additionally the phase-fractions in the multi-phase (rather than two-phase)
      solvers are adjusted to avoid the slow growth of inconsistency ("drift") caused
      by solving for all of the phase-fractions rather than deriving one from the
      others.
      ad92287a
  13. Aug 05, 2016
  14. Apr 28, 2016
    • Henry Weller's avatar
      GeometricField::GeometricBoundaryField -> GeometricField::Boundary · 75ea7618
      Henry Weller authored
      When the GeometricBoundaryField template class was originally written it
      was a separate class in the Foam namespace rather than a sub-class of
      GeometricField as it is now.  Without loss of clarity and simplifying
      code which access the boundary field of GeometricFields it is better
      that GeometricBoundaryField be renamed Boundary for consistency with the
      new naming convention for the type of the dimensioned internal field:
      Internal, see commit a25a449c
      
      This is a very simple text substitution change which can be applied to
      any code which compiles with the OpenFOAM-dev libraries.
      75ea7618
  15. Apr 25, 2016
    • Henry Weller's avatar
      Completed boundaryField() -> boundaryFieldRef() · a4e2afa4
      Henry Weller authored
      Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1938
      
      Because C++ does not support overloading based on the return-type there
      is a problem defining both const and non-const member functions which
      are resolved based on the const-ness of the object for which they are
      called rather than the intent of the programmer declared via the
      const-ness of the returned type.  The issue for the "boundaryField()"
      member function is that the non-const version increments the
      event-counter and checks the state of the stored old-time fields in case
      the returned value is altered whereas the const version has no
      side-effects and simply returns the reference.  If the the non-const
      function is called within the patch-loop the event-counter may overflow.
      To resolve this it in necessary to avoid calling the non-const form of
      "boundaryField()" if the results is not altered and cache the reference
      outside the patch-loop when mutation of the patch fields is needed.
      
      The most straight forward way of resolving this problem is to name the
      const and non-const forms of the member functions differently e.g. the
      non-const form could be named:
      
          mutableBoundaryField()
          mutBoundaryField()
          nonConstBoundaryField()
          boundaryFieldRef()
      
      Given that in C++ a reference is non-const unless specified as const:
      "T&" vs "const T&" the logical convention would be
      
          boundaryFieldRef()
          boundaryFieldConstRef()
      
      and given that the const form which is more commonly used is it could
      simply be named "boundaryField()" then the logical convention is
      
          GeometricBoundaryField& boundaryFieldRef();
      
          inline const GeometricBoundaryField& boundaryField() const;
      
      This is also consistent with the new "tmp" class for which non-const
      access to the stored object is obtained using the ".ref()" member function.
      
      This new convention for non-const access to the components of
      GeometricField will be applied to "dimensionedInternalField()" and "internalField()" in the
      future, i.e. "dimensionedInternalFieldRef()" and "internalFieldRef()".
      a4e2afa4
  16. Apr 16, 2016
  17. Apr 06, 2016
  18. Feb 26, 2016
    • Henry Weller's avatar
      OpenFOAM: Updated all libraries, solvers and utilities to use the new const-safe tmp · 78590832
      Henry Weller authored
      The deprecated non-const tmp functionality is now on the compiler switch
      NON_CONST_TMP which can be enabled by adding -DNON_CONST_TMP to EXE_INC
      in the Make/options file.  However, it is recommended to upgrade all
      code to the new safer tmp by using the '.ref()' member function rather
      than the non-const '()' dereference operator when non-const access to
      the temporary object is required.
      
      Please report any problems on Mantis.
      
      Henry G. Weller
      CFD Direct.
      78590832
  19. Feb 20, 2016
    • Henry Weller's avatar
      Boundary conditions: Added extrapolatedCalculatedFvPatchField · 7d192447
      Henry Weller authored
      To be used instead of zeroGradientFvPatchField for temporary fields for
      which zero-gradient extrapolation is use to evaluate the boundary field
      but avoiding fields derived from temporary field using field algebra
      inheriting the zeroGradient boundary condition by the reuse of the
      temporary field storage.
      
      zeroGradientFvPatchField should not be used as the default patch field
      for any temporary fields and should be avoided for non-temporary fields
      except where it is clearly appropriate;
      extrapolatedCalculatedFvPatchField and calculatedFvPatchField are
      generally more suitable defaults depending on the manner in which the
      boundary values are specified or evaluated.
      
      The entire OpenFOAM-dev code-base has been updated following the above
      recommendations.
      
      Henry G. Weller
      CFD Direct
      7d192447
  20. Jan 25, 2016
    • mattijs's avatar
      ENH: glboal file handling: initial commit · c7848a72
      mattijs authored
      Moved file path handling to regIOobject and made it type specific so
      now every object can have its own rules. Examples:
      - faceZones are now processor local (and don't search up anymore)
      - timeStampMaster is now no longer hardcoded inside IOdictionary
        (e.g. uniformDimensionedFields support it as well)
      - the distributedTriSurfaceMesh is properly processor-local; no need
        for fileModificationChecking manipulation.
      c7848a72
  21. Nov 10, 2015
  22. Nov 01, 2015
  23. Oct 05, 2015
  24. Sep 11, 2015
  25. Jul 21, 2015
  26. Jul 17, 2015
  27. Jun 26, 2015
  28. Apr 29, 2015
    • Henry's avatar
      Update headers · e5a52c90
      Henry authored
      e5a52c90
    • Henry's avatar
      MULES: nLimiterIter and smoothLimiter are now user-input via the corresponding fvSolution sub-dict · 3e2b64c0
      Henry authored
      nLimiterIter: Number of iterations during limiter construction
          3 (default) is sufficient for 3D simulations with a Courant number 0.5 or so
          For larger Courant numbers larger values may be needed but this is
          only relevant for IMULES and CMULES
      
      smoothLimiter: Coefficient to smooth the limiter to avoid "diamond"
          staggering patters seen in regions of low particle phase-fraction in
          fluidised-bed simulations.
      
          The default is 0 as it is not needed for all simulations.
          A value of 0.1 is appropriate for fluidised-bed simulations.
          The useful range is 0 -> 0.5.
          Values larger than 0.5 may cause excessive smearing of the solution.
      3e2b64c0
  29. Dec 10, 2014