1. 02 Jun, 2020 1 commit
  2. 27 May, 2020 2 commits
    • Christopher Subich's avatar
      wave_reader: compute hill properly with z-decreasing · 4fba6227
      Christopher Subich authored
      Previously, wave_reader computed the hill height as a fixed
      
        zgrid(:,1,1) - MinZ // matlab notation
      
      which implicitly assumes that z increases along the third index.  If
      that assumption is violated, the BPE calculation breaks (in ways that
      can cause assertion failures based on roundoff error, at that).
      
      Fixing the calculation as min(zgrid(i,1,:)) at initialization time
      alleviates this problem.
      4fba6227
    • Christopher Subich's avatar
      wave_reader: allow FULL input types · 471ccd94
      Christopher Subich authored
      Previously, wave_reader locked 'FULL' (3D) input behind enabling
      restart.  This restriction was unnecessary, and doing so in fact made
      the specification of u/v/w/rho filenames useless.
      
      Deleting this check allows proper read-in of FULL datatypes, without
      faking a restart.  The only functional difference is that if
      perturbations are also enabled, they will be applied on top of the 3D
      data read.  This seems to be desirable, since it makes the application
      of the config-file settings more straightforward.
      471ccd94
  3. 04 May, 2020 1 commit
    • Christopher Subich's avatar
      Updates to solver parameters · 79b17389
      Christopher Subich authored
      Based on experience with a poorly-converging, steep hill case, the
      number of inner iterations in GMRES is increased to 40, and the number
      of outer iterations drops to 2.
      
      Please pay attention to GMRES warnings and report cases where things
      don't work well, there's probably an optimal parameter range (or else we
      could make the parameters a runtime config option).
      79b17389
  4. 10 Jun, 2019 1 commit
    • David Deepwell's avatar
      Fix topography error in wave_reader · 645e99d8
      David Deepwell authored
      The quadrature weights were found to be incorrect for mapped grids
      because they were adjusted using the topography which was not
      scaled properly. The topography needed to be adjusted to be relative
      of the 'minimum z-value'. This is in quation marks because it is
      not necessarily the absolute minimum, but rather the reference
      minimum.
      This shift also fixed the BPE calculation to have the same reference
      as the PE calculation.
      645e99d8
  5. 16 Apr, 2019 1 commit
  6. 02 Apr, 2019 2 commits
    • David Deepwell's avatar
      Fix error in tracer/rho safety dump in wave_reader · e5bec6c2
      David Deepwell authored
      The previous "fix" swapped rho and tracer.
      
      Update to version 2.0.4
      e5bec6c2
    • David Deepwell's avatar
      Add vortex stretching and enstrophy stretching production terms · a63ba535
      David Deepwell authored
      Vortex stretching is one of the dominant terms in both the
      vorticity equation and enstrophy equation. They also help in
      understanding the vortex dynamics and how energy at large scales
      cascades into small scales.
      
      The three components of vortex stretching (omega dot grad) u
      and the enstrophy stretching production (omega_i omega_j S_ij)
      are now included and can be computed with the derivatives
      case file. Files for vortex stretching terms are called
      vort-stretch<dim> where <dim> is one of x,y,z. The enstrophy
      stretching production file is called enst-stretch.
      
      As these quantities are the product of velocity gradients, care
      must be made to ensure adequate resolution is present.
      
      Update version to 2.0.3
      a63ba535
  7. 29 Mar, 2019 1 commit
  8. 26 Mar, 2019 1 commit
  9. 25 Mar, 2019 1 commit
  10. 22 Mar, 2019 6 commits
  11. 15 Mar, 2019 4 commits
    • David Deepwell's avatar
      Update Version message · 38d5d4ab
      David Deepwell authored
      The SPINS version is now the first thing printed in a simulation.
      Also fixed typo in writing the grid in BaseCase.cpp
      38d5d4ab
    • Benjamin Storer's avatar
      Adds version numbering to the repository · b6c48e5a
      Benjamin Storer authored
      The file VERSION now records the MAJOR_VERSION, MINOR_VERSION,
      and PATCH_VERSION.
      To update the version number, the user only needs to modify the
      appropriate lines in VERSION.
      
      Makefile has been updated to automatically pass the version
      information through compiler flags.
      
      BaseCase.cpp has been updated to add a print statement into the
      initialization function. By default, every casefile that uses
      BaseCase will now print the SPINS version with which is was compiled.
      This should help avoid issues with mis-matched versions.
      
      It will appear in the output as:
      SPINS Version 1.0.1
      
      The starting version is set to 2.0.0
      
      StackOverflow has a nice summary of when to change which version number
      (https://stackoverflow.com/questions/3826580/what-rules-does-software-version-numbering-follow)
       - Major version numbers change whenever there is some significant change
      being introduced. For example, a large or potentially
      backward-incompatible change to a software package.
       - Minor version numbers change when a new, minor feature is introduced or
      when a set of smaller features is rolled out.
       - Patch numbers change when a new build of the software is released to
      customers. This is normally for small bug-fixes or the like.
      b6c48e5a
    • David Deepwell's avatar
      Correct the v-velocity initialization · 22a6bfac
      David Deepwell authored
      22a6bfac
    • David Deepwell's avatar
      f6bae124
  12. 07 Mar, 2019 1 commit
  13. 29 Nov, 2018 1 commit
  14. 15 Nov, 2018 1 commit
  15. 17 Jul, 2018 1 commit
  16. 05 Jul, 2018 1 commit
    • Benjamin Storer's avatar
      Refactor Science.cpp to split functions into separate files. · dffa6f21
      Benjamin Storer authored
      === Science ===
      The directory Science/ now contains files corresponding to
      the various functions in the now-removed Science.cpp.
      
      Filenames correspond directly with the function name, and each
      file contains only one functions, with a few notable exceptions.
       - Science/get_quads.cpp contains get_quads_x, get_quads_y, and get_quads_z
       - Science/compute_background_PE contains the helper function
      compare_pairs
      
      The global variables _quadw_x, _quadw_y, and _quadw_z are declared as
      extern in Science.hpp and declared in Science/compute_quadweights.cpp
      
      === Makefile ===
      The Makefile has been modified accordingly. It now automatically detects
      all Science/*.cpp files and includes them in the compile recipe.
      
      The Makefile has also been tidied up a little bit by defining a variable
      SPINS_BASE which points to the core files.
      dffa6f21
  17. 26 Apr, 2018 1 commit
  18. 25 Apr, 2018 2 commits
    • David Deepwell's avatar
      Update cases with mode-2 ISW · 0963fd7c
      David Deepwell authored
      Combined the mapped and unmapped cases for this into a single
      case file.
      0963fd7c
    • Christopher Subich's avatar
      Modify make_deps to check out libraries from UWGit · a55e544e
      Christopher Subich authored
      With the retirement of belize, which formerly hosted a fixed
      copy of the dependency libraries, make_deps.sh would no
      longer download and build said libraries.
      
      These libraries are now instead hosted in a dedicated
      repository at UWGit, so make_deps.sh has been changed to
      clone this repository.
      a55e544e
  19. 18 Apr, 2018 2 commits
  20. 05 Apr, 2018 1 commit
    • David Deepwell's avatar
      Update map_iwave case to use new diagnostics · e6b803fd
      David Deepwell authored
      This case has uncovered that the BPE calculation returns
      incorrect values when a Chebyshev grid is used on a field scale.
      The BPE calculation uses the quadrature weights as the volumes
      of each cell. This is true when the grid is regular, but incorrect
      for Chebyshev grids.
      
      To first approximation the Cheb quadrature weights are close to
      the volumes of the cells. This leads to the BPE calculation
      being accurate to 8 significant figures. 8 sig figs is not enough
      on fields scales since the magnitude of the PE can be very, very
      large. The difference of the BPE from the PE can thus be smaller
      than these 8 sig figs.
      e6b803fd
  21. 23 Mar, 2018 1 commit
  22. 22 Mar, 2018 1 commit
  23. 16 Mar, 2018 2 commits
  24. 13 Mar, 2018 1 commit
    • David Deepwell's avatar
      Update gravity_current to only use full zgrid · e938e1be
      David Deepwell authored
      The full xgrid and ygrid are unnecessary since x and y only
      depend on a single variable (or index - ii for x, and jj for y).
      The variables xx and yy can be used instead of xgrid and ygrid,
      respectively. Creating the full grids for these fields is a
      waste of memory.
      e938e1be
  25. 15 Feb, 2018 1 commit
  26. 09 Feb, 2018 1 commit
  27. 07 Feb, 2018 1 commit
    • Christopher Subich's avatar
      Simplify GMRES dot products; fix convergence errors · 8ae27fe5
      Christopher Subich authored
      This commit amends Cheb_2dmg::resid_dot (dot-product of
      residual vectors in the context of the 2D GMRES/multigrid
      iteration) to perform the dot-product in the simplest way,
      as a sum over grid elements.
      
      Before this, the code (which is left in the file but
      disabled by #if 1 / #else) tried to be clever and
      evenly-weight contributions from the interior, the boundary
      conditions, and the mean-pressure error (if the problem was
      indeterminate).  This evidently caused the long-standing
      problem of the GMRES inner iteration being far more
      optimistic about error (as reported by LAPACK) than would be
      computed by directly measuring the residual error.
      
      This problem was ultimately discovered when the
      doc_map_iwave case broke.  Even though this broken residual
      code has been in SPINS since before it was
      version-controlled via GIT, the map_iwave case would still
      converge (and relatively quickly) when the multigrid
      iteration had a relatively large coarse-solve size.
      
      Git bisect pinned the broken documentation case on the
      change that reduced the coase-grid size, which reduced the
      GMRES convergence rates enough that the errors caused by
      *this* problem broke convergence.
      
      Since this change replaces the error norm calculations used
      by GMRES, it should be treated with caution and mapped-grid
      cases should have a mark-1-eyeball inspection of results for
      a while.
      
      --
      
      Additionally, for debugging utility this change also
      includes crude residual/basis output for the 2D GMRES
      solver.  All current uses are commented out.
      8ae27fe5