Skip to content
Snippets Groups Projects
  1. Dec 01, 2023
  2. Jun 13, 2023
    • Mark OLESEN's avatar
      ENH: make checkMesh writing of bad edges optional (#2771) · 1cdba9b2
      Mark OLESEN authored
      - primarily relevant for finite-area meshes, in which case they can be
        considered to be an additional, detailed diagnositic that is
        normally not needed (clutters the file system).
      
        Writing can be enabled with the `-write-edges` option.
      1cdba9b2
  3. Mar 10, 2022
    • Mark OLESEN's avatar
      ENH: refactor coordSet writers (#2347) · c3e14ffd
      Mark OLESEN authored
      - the very old 'writer' class was fully stateless and always templated
        on an particular output type.
      
        This is now replaced with a 'coordSetWriter' with similar concepts
        as previously introduced for surface writers (#1206).
      
        - writers change from being a generic state-less set of routines to
          more properly conforming to the normal notion of a writer.
      
        - Parallel data is done *outside* of the writers, since they are used
          in a wide variety of contexts and the caller is currently still in
          a better position for deciding how to combine parallel data.
      
      ENH: update sampleSets to sample on per-field basis (#2347)
      
      - sample/write a field in a single step.
      
      - support for 'sampleOnExecute' to obtain values at execution
        intervals without writing.
      
      - support 'sets' input as a dictionary entry (as well as a list),
        which is similar to the changes for sampled-surface and permits use
        of changeDictionary to modify content.
      
      - globalIndex for gather to reduce parallel communication, less code
      
      - qualify the sampleSet results (properties) with the name of the set.
        The sample results were previously without a qualifier, which meant
        that only the last property value was actually saved (previous ones
        overwritten).
      
        For example,
        ```
          sample1
          {
              scalar
              {
                  average(line,T) 349.96521;
                  min(line,T)     349.9544281;
                  max(line,T)     350;
                  average(cells,T) 349.9854619;
                  min(cells,T)    349.6589286;
                  max(cells,T)    350.4967271;
                  average(line,epsilon) 0.04947733869;
                  min(line,epsilon) 0.04449639927;
                  max(line,epsilon) 0.06452856475;
              }
              label
              {
                  size(line,T)    79;
                  size(cells,T)   1720;
                  size(line,epsilon) 79;
              }
          }
        ```
      
      ENH: update particleTracks application
      
      - use globalIndex to manage original parcel addressing and
        for gathering. Simplify code by introducing a helper class,
        storing intermediate fields in hash tables instead of
        separate lists.
      
      ADDITIONAL NOTES:
      
      - the regionSizeDistribution largely retains separate writers since
        the utility of placing sum/dev/count for all fields into a single file
        is questionable.
      
      - the streamline writing remains a "soft" upgrade, which means that
        scalar and vector fields are still collected a priori and not
        on-the-fly.  This is due to how the streamline infrastructure is
        currently handled (should be upgraded in the future).
      c3e14ffd
  4. Feb 07, 2022
  5. May 07, 2021
  6. Mar 10, 2021
  7. Dec 11, 2020
  8. Jul 27, 2020
  9. Jul 23, 2020
  10. Jun 02, 2020
    • Mark OLESEN's avatar
      ENH: support predicate checks for argList (similar to dictionary methods) · 31b17221
      Mark OLESEN authored
      - Favour use of argList methods that are more similar to dictionary
        method names with the aim of reducing the cognitive load.
      
        * Silently deprecate two-parameter get() method in favour of the
          more familiar getOrDefault.
        * Silently deprecate opt() method in favour of get()
      
        These may be verbosely deprecated in future versions.
      31b17221
  11. Feb 06, 2020
  12. Jan 06, 2020
  13. Nov 26, 2019
  14. Oct 31, 2019
  15. Sep 02, 2019
  16. Feb 07, 2019
    • Mark OLESEN's avatar
      ENH: improved sample surfaces and surface writers (#1206) · 181c974b
      Mark OLESEN authored
      - The writers have changed from being a generic state-less set of
        routines to more properly conforming to the normal notion of a writer.
        These changes allow us to combine output fields (eg, in a single
        VTK/vtp file for each timestep).
      
        Parallel data reduction and any associated bookkeeping is now part
        of the surface writers.
        This improves their re-usability and avoids unnecessary
        and premature data reduction at the sampling stage.
      
        It is now possible to have different output formats on a per-surface
        basis.
      
      - A new feature of the surface sampling is the ability to "store" the
        sampled surfaces and fields onto a registry for reuse by other
        function objects.
      
        Additionally, the "store" can be triggered at the execution phase
        as well
      181c974b
  17. Feb 06, 2019
  18. Dec 11, 2018
  19. Dec 12, 2018
  20. Jul 31, 2018
  21. Mar 21, 2018
  22. Mar 12, 2018
  23. Feb 22, 2018
  24. Jan 08, 2018
    • Mark OLESEN's avatar
      ENH: simplify method names for reading argList options and arguments · 345a2a42
      Mark OLESEN authored
      - use succincter method names that more closely resemble dictionary
        and HashTable method names. This improves method name consistency
        between classes and also requires less typing effort:
      
          args.found(optName)        vs.  args.optionFound(optName)
          args.readIfPresent(..)     vs.  args.optionReadIfPresent(..)
          ...
          args.opt<scalar>(optName)  vs.  args.optionRead<scalar>(optName)
          args.read<scalar>(index)   vs.  args.argRead<scalar>(index)
      
      - the older method names forms have been retained for code compatibility,
        but are now deprecated
      345a2a42
  25. Jul 16, 2017
  26. Jul 07, 2017
    • Andrew Heather's avatar
      INT: Integration of Mattijs' collocated parallel IO additions · d8d6030a
      Andrew Heather authored
      Original commit message:
      ------------------------
      
      Parallel IO: New collated file format
      
      When an OpenFOAM simulation runs in parallel, the data for decomposed fields and
      mesh(es) has historically been stored in multiple files within separate
      directories for each processor.  Processor directories are named 'processorN',
      where N is the processor number.
      
      This commit introduces an alternative "collated" file format where the data for
      each decomposed field (and mesh) is collated into a single file, which is
      written and read on the master processor.  The files are stored in a single
      directory named 'processors'.
      
      The new format produces significantly fewer files - one per field, instead of N
      per field.  For large parallel cases, this avoids the restriction on the number
      of open files imposed by the operating system limits.
      
      The file writing can be threaded allowing the simulation to continue running
      while the data is being written to file.  NFS (Network File System) is not
      needed when using the the collated format and additionally, there is an option
      to run without NFS with the original uncollated approach, known as
      "masterUncollated".
      
      The controls for the file handling are in the OptimisationSwitches of
      etc/controlDict:
      
      OptimisationSwitches
      {
          ...
      
          //- Parallel IO file handler
          //  uncollated (default), collated or masterUncollated
          fileHandler uncollated;
      
          //- collated: thread buffer size for queued file writes.
          //  If set to 0 or not sufficient for the file size threading is not used.
          //  Default: 2e9
          maxThreadFileBufferSize 2e9;
      
          //- masterUncollated: non-blocking buffer size.
          //  If the file exceeds this buffer size scheduled transfer is used.
          //  Default: 2e9
          maxMasterFileBufferSize 2e9;
      }
      
      When using the collated file handling, memory is allocated for the data in the
      thread.  maxThreadFileBufferSize sets the maximum size of memory in bytes that
      is allocated.  If the data exceeds this size, the write does not use threading.
      
      When using the masterUncollated file handling, non-blocking MPI communication
      requires a sufficiently large memory buffer on the master node.
      maxMasterFileBufferSize sets the maximum size in bytes of the buffer.  If the
      data exceeds this size, the system uses scheduled communication.
      
      The installation defaults for the fileHandler choice, maxThreadFileBufferSize
      and maxMasterFileBufferSize (set in etc/controlDict) can be over-ridden within
      the case controlDict file, like other parameters.  Additionally the fileHandler
      can be set by:
      - the "-fileHandler" command line argument;
      - a FOAM_FILEHANDLER environment variable.
      
      A foamFormatConvert utility allows users to convert files between the collated
      and uncollated formats, e.g.
          mpirun -np 2 foamFormatConvert -parallel -fileHandler uncollated
      
      An example case demonstrating the file handling methods is provided in:
      $FOAM_TUTORIALS/IO/fileHandling
      
      The work was undertaken by Mattijs Janssens, in collaboration with Henry Weller.
      d8d6030a
  27. May 08, 2017
  28. Jul 22, 2016
    • Henry Weller's avatar
      checkMesh: Added option to write sets · aa30d0e7
      Henry Weller authored
        - the checking for point-connected multiple-regions now also writes the
          conflicting points to a pointSet
        - with the -writeSets option it now also reconstructs & writes pointSets
      aa30d0e7
  29. Jun 17, 2016
  30. Jun 12, 2016
    • Henry Weller's avatar
      checkMesh: Added writing of faceSets and cellSets containing errors · e2336fef
      Henry Weller authored
      In parallel the sets are reconstructed. e.g.
      
      mpirun -np 6 checkMesh -parallel -allGeometry -allTopology -writeSets vtk
      
      will create a postProcessing/ folder with the vtk files of the
      (reconstructed) faceSets and cellSets.
      
      Also improved analysis of disconnected regions now also checks for point
      connectivity with is useful for detecting if AMI regions have duplicate
      points.
      
      Patch contributed by Mattijs Janssens
      e2336fef
  31. Jun 06, 2016
  32. May 13, 2016
  33. Jun 27, 2016
  34. Nov 23, 2015
    • mattijs's avatar
      ENH: checkMesh: have -writeSets option · 61dd6252
      mattijs authored
      - checkMesh has option to write faceSets or (outside of) cellSets as
      sampledSurface format. It automatically reconstructs the set on the master
      and writes it to the postProcessing folder (as any sampledSurface). E.g.
      
          mpirun -np 6 checkMesh -allTopology -allGeometry -writeSets vtk -parallel
      
      - fixed order writing of symmTensor in Ensight writers
      61dd6252
  35. Feb 10, 2015
  36. Feb 21, 2013
  37. May 30, 2012
  38. May 16, 2012
  39. Aug 14, 2011