1. 18 Sep, 2015 1 commit
  2. 24 Aug, 2015 1 commit
  3. 10 Jun, 2015 1 commit
  4. 28 Nov, 2014 1 commit
    • Christopher Subich's avatar
      Fix for wavenumbers of null transform · a41e044e
      Christopher Subich authored
      Parformer.cpp -- previously, an all-NULL transform being
      asked for its wavenumbers would only return an array of size
      one, rather than one of appropriate length for the (real)
      "temporary" array.  This could conceivably have caused
      problems for the graceful use of 3D routines on
      2D-but-layered fields.
  5. 29 Sep, 2014 2 commits
    • Christopher Subich's avatar
      Removed old "Transformer" code · 1a1c8814
      Christopher Subich authored
      The pair of Transformer.[ch]pp files contained old code built for SPINS
      before parallel transformation (over MPI) was fully implemented.  These
      classes were replaced wholesale with Parformer.[ch]pp (Parallel
      Transformer), but the older code remained in the repository.
      Removing these files should not affect any active code.  It will affect
      certain disued test cases (subject to changing #includes), but these
      cases themselves need more serious maintenance to update for the
      "gradient object" interface.
    • Michael's avatar
      Print descriptive names for dimtype and expansion · c8cdf0c1
      Michael authored
      At startup, print a string describing the dimension
      type and spectral expansion type, rather than the
      internal enum value.
  6. 18 Sep, 2014 1 commit
  7. 11 Sep, 2014 1 commit
    • Christopher Subich's avatar
      wave_reader, tracer file output · 2a7736a9
      Christopher Subich authored
      Previously for the wave_reader case file, "tracer.0" and
      "tracer_reader.m" files were being output regardless of whether the
      configuration specified that there was a passive tracer.  This arose
      because of a scoping error during tracer initalization; tracer.0
      contained a copy of rho.0.
      This has been fixed in this commit.  No numerical results were in error
      because of this bug.
  8. 10 Sep, 2014 1 commit
    • Michael Dunphy's avatar
      Embed the case file source in the SPINS binary. · 1d616e81
      Michael Dunphy authored
      The case file source code is embedded into the binary at compile time.
      At runtime, the source code is printed to spinscase.cpp. This eliminates
      the need to maintain a copy of the case file alongside the binary.
  9. 17 Jun, 2014 1 commit
    • Christopher Subich's avatar
      Include sanity checking for quadrature weight init · c6a0c6d5
      Christopher Subich authored
      The quadrature weight "get" functions will now check whether the
      corresponding array has been initialized (length >= 1) before returning
      the array.  This will catch errors where quadrature weights are used
      before being initialized.
  10. 24 Mar, 2014 1 commit
  11. 20 Mar, 2014 1 commit
    • Christopher Subich's avatar
      Fixed "automatic" grid calculation error for wave_reader · d2454796
      Christopher Subich authored
      The "automatic" (unmapped) grid calculation used by wave_reader
      (automatic_grid in BaseCase.cpp) was in error for grids of
      Chebyshev-type.  Instead of computing:
      z = -Lz/2 + Lz/2*cos(pi*(0:(N-1))/(N-1))
      it instead computed
      z = -Lz/2 + Lz/2*cos(pi*(0:(N-1))/N)
      (to use matlab-style notation).  This caused the written-out zgrid to be
      in error near the bottom (max z-index) boundary.  Files using a
      chebyshev-type unmapped x-coordinate would see the error as well in the
      x-grid (max x-index).
      This error affects only processing that uses the grid variables itself.
      Within wave_reader where this was used, the automatic-generated grids
      were used only for writing out; the input velocities and density were
      read directly in from their corresponding files.  Likewise, SPINS
      performed the "correct" differentiation internally without reference to
      the grid coordinate.
  12. 17 Mar, 2014 1 commit
  13. 28 Nov, 2013 1 commit
  14. 02 Oct, 2013 3 commits
  15. 26 Sep, 2013 2 commits
  16. 22 Jul, 2013 6 commits
    • Christopher Subich's avatar
    • Christopher Subich's avatar
    • Christopher Subich's avatar
    • Christopher Subich's avatar
      Cleaned up compiler warnings · 5ede1ef9
      Christopher Subich authored
      As compiler versions march on, some previously-valid code was generating
      warnings; these have been corrected.
      *) In Plan_holder and T_util, using <ext/hash_map> was generating a
      deprecation warning.  The proper replacement for the GCC <hash_map> is
      the STL <unordered_map>, however that is part of the C++-0x standard
      that is not yet supported by default in GCC 4.3-4.6, requiring a
      compile-time command-line flag.
      Since implementing *that* over a broad range of systems will be
      extremely difficult, the better option for now is to silence the
      deprecation warning by selectively undefining __DEPRECATED around the
      inclusion of <ext/hash_map>.  This preserves any GCC deprecation
      warnings around other bits of code.
      *) In T_util and gmres_1d_solver, "literal string constants" were being
      assigned to char *, when string literals are supposed to be const char
      *.  This reflected an error in the variable spec; there's no reason that
      the assigned-to-vars couldn't themselves be const char *....
    • Christopher Subich's avatar
      Include mpi.h in Split_reader_impl.cc · 3434eded
      Christopher Subich authored
    • Christopher Subich's avatar
      Fixes to make old dipole cases compile · 78a57549
      Christopher Subich authored
      The old dipole cases in the cases/ directory (dipole crashing into
      no-slip boundary) were initially written before the 'analysis'
      routine was given pressure.  Adding pressure-analysis to NSIntegrator
      changed the method's prototype, leading to a compile-time error on
      these files.  The fix is to add a dummy 'pressure' reference to the
      dipoles' analysis methods; the behaviour of the other parameters is
      unchanged so no logic changes are necessary.
  17. 09 Jul, 2013 1 commit
    • Christopher Subich's avatar
      Added MPI_Barrier to split file reader · 6b137f48
      Christopher Subich authored
      This update adds an explicit MPI Barrier to the end of the split 2D file
      reader.  This should address a race condition discovered by Nancy when
      resuming a 2D case as 3D on Scinet, where the initially-2D files were
      (correctly) overwritten by their 3D versions.  It appears that the
      overwrite happened on some processes before others had opened the file,
      causing the later processes to read incomplete files.  The exact
      sequence appears to have been:
      * Process 1 opens 'u.0' as a 2D-split file to read
      * Process 1 finishes its reading and assigns the contents to its
        internally-3D array
      * Process 1 begins writing out its segment of the 3D array, as 'u.0'.
        (It blocks on the write-synchronization, but has already written to
      * Process 2 wakes up (on a remote node) and opens 'u.0' as a
        presumably-2D file.  It dies.
      This race condition could, under different circumstances, also cause
      data corruption (if process N wasn't reading past the end of the file in
      a linear sense; possible for large Ny and small Np).  The corrective
      measure was to apply an MPI Barrier at the end of read_2d_slice in
      Split_reader_impl.cc (the implementation fucntion used by the more
      user-friendly functions in Science.cpp).
  18. 04 Jun, 2013 1 commit
  19. 27 May, 2013 1 commit
    • Christopher Subich's avatar
      Add -ftz for builds on winisk · ebb3432a
      Christopher Subich authored
      This patch specifically includes -ftz for winisk builds; this
      forces denormalized floats to be flushed to 0, which should
      avoid software-floating-point-faults that spam /var/log/messages
      and probably slow down the program.  (Quick checks suggest a ~8%
      speed increase for bench_dipole).
      Additionally, make_deps is also extended to specifically include
      CFLAGS and mark building with CC on the ./configure command line.
      This should ensure that the library is built with the same
      compiler (and settings) as SPINS itself.  If you have to modify
      this part, pay special attention to the comment abour use of bash
      array syntax.
  20. 24 Apr, 2013 1 commit
    • Christopher Subich's avatar
      Added build options for clean build on plata · 2f6524af
      Christopher Subich authored
      Prior modifications to systems/plata.sh did not result in a clean
      build; spins itself and the UMFPACK libraries were built in 64-
      bit with the -m64 option, but fftw, blitz, and boost were not.
      This led to build-time errors.  The fix involves making sure that
      make_deps specifies CFLAGS/CXXFLAGS as appropriate, and this was
      done via including $BOOST_OPTIONS/$FFTW_OPTIONS/etc flags.  Where
      those didn't already exist in make_deps, they were added so that
      it will be easy to make a similar change in the future for other
  21. 04 Apr, 2013 1 commit
  22. 21 Feb, 2013 1 commit
  23. 28 Dec, 2012 1 commit
    • Christopher Subich's avatar
      Update of belize build · 424c991f
      Christopher Subich authored
      This adds -lblas to the lapack library flag, because with the last
      update the toolchain on Belize is more strict about implicit library
      Also, the library flags have been re-ordered in the general makefile,
      going (roughly) from most specific to least.
  24. 22 Dec, 2012 1 commit
  25. 07 Nov, 2012 1 commit
    • Christopher Subich's avatar
      Copied compiler-optimization flags to linker · 739954bd
      Christopher Subich authored
      In the system-specific build setting scripts, the OPTIM_LDFLAGS
      variable was generally empty.  As it turns out, at least for
      Itanium systems, this disabled a key optimization or two, leading
      to the emergence of denormalized floats (which, on these systems,
      are handled in software).  Testing shows that including -O3 at
      the link step should keep this optimization enabled (really just
      a modification of the default floating-point environment).  Since
      this change is unlikely to break anything, the fix for all systems
      has been to copy the $OPTIM_CFLAGS variable to $OPTIM_LDFLAGS.
  26. 12 Oct, 2012 2 commits
    • Christopher Subich's avatar
      Modified the large bench_kh case to output memory usage · 7a9a75e3
      Christopher Subich authored
      Using code lifted from internal_wave_dl, the benchmark case now reads
      /proc/self/statm on a per-process basis in order to get the resident
      set size.  This solution is probably -not portable- outside of Linux
      systems; when the file is not present the execution will likely die with
      an assertion failure.
      Additionally, no effort is made to properly account for shared memory --
      a hypothetical run that uses 1MB/proc of local memory and 99MB/proc of
      shared memory will report a total of 100MB * procs memory usage, rather
      than 1 * procs + 99MB.  A general solution here is difficult because it
      relies on accounting for shared memory once-per-system (and nhost > 1
      for cluster configurations).
    • Christopher Subich's avatar
      Fixed error-tests in make_deps.sh · fbc9c9df
      Christopher Subich authored
  27. 05 Oct, 2012 1 commit
  28. 04 Oct, 2012 3 commits
    • Christopher Subich's avatar
    • Christopher Subich's avatar
      Fixed bug relating to crash inside LAPACK for gmres · 0acb0ac2
      Christopher Subich authored
      The rectangular-matrix solve inside the GMRES code is computed with the
      LAPACK function DGELSD.  This function has a 'workspace query' in order
      to give the proper allocation of the workspace array.  As it turns out,
      the -integer- work array (as opposed to the floating-point one) is of a
      fixed size, and it can be allocated ahead of time.  Not doing so caused
      problems with MKL on SciNet, since even for the query the intel version
      of LAPACK wrote to this array (causing a segmentation fault).
    • Christopher Subich's avatar
      Fixed minor uninitialized-memory errors in multigrid · 1ed4b331
      Christopher Subich authored
      In a Valgrind check, several usages of uninitialized memory in the
      multigrid code were being caught.  This was related to the check for
      boundary-condition indefiniteness/validity at the coarsest level.  In
      effect these errors were harmless, but fixing them will make future
      Valgrind checks cleaner.