-------------------------------------------------------------------------
Channelflow-0.9.19  Tue Nov 15 12:55:12 EST 2005

Fixed bug in FFTW planning: a certain sequence of FFTW_ESTIMATE, load_wisdom,
and FFTW_MEASURE plan construction in FlowFields created bad plans (detected
by large divergence of div-free fields after back&forth transforming. Didn't
investigate in depth, simply switched all FlowField plans constructions
to FFTW_MEASURE. Need to investigate and alert fftw guys if it's an fftw bug.

Removed for (int i=0; i<N_; ++i) data_[i] = T(); from Array(int N) ctor.
Added checks for non-zeroness of fftw plans bfore calling fftw_destroy_plan,
  and similar for main_algorithm and init_algorithm in DNS.
Fixed bug in FlowField::interpolate that tried one too many kx modes when
  the two fields had equal Nx.
Added assignment op for PoissonSolver.

-------------------------------------------------------------------------
Channelflow-0.9.18  Fri Oct 28 14:55:36 EDT 2005

Fixed bug in Chebyshev transforms, introduced in 0.9.17 w FFTW3 upgrade
(Bug was missing factor of 2,1/2 on last mode in transforms)
Updated documentation to partially reflect new DNS class and algorithms.

Changed gcc optimization flag from -O3 to -O2 in Makefiles.
Modified Chebyshev classes to work for N=0,1.
Cleaned up order of declarations in chebyshev.h
Changed versioned FlowField IO to work w ints 0,9,18 instead of "0.9.18"
Added "const" to FlowField::Dx and Dz.vyy
Changed BC computation in pressure solver to use curl curl u instead of vyy.
Put makeroll, etc in utilfuncs

-------------------------------------------------------------------------
Channelflow-0.9.17  Tue Oct 18 11:30:44 EDT 2005

Upgraded to FFTW-3.x! (finally...). Substantial changes to FlowField and
  Chebyshev-related classes, including switching to FFTW's allocation and
  deallocation routines in all these classes plus Vector. Revisions are
  pretty well tested. Confirmed that FFTW3-based couette.cpp matches
  FFTW-2 based couette.cpp to 1e-15 in L2Norm and per Fourier mode, to t=10.
  Chebyshev classes no longer require odd Ny, no longer have sin/cos tables
  and NumRec-style pre/post-processing.
Moved guts of cheby transform code into ChebyCoeff::chebyfft(ChebyTransform&)
  from ChebyTransform::chebyfft(ChebyCoeff&) and removed the latter function. 
  Both functions were available for historical reasons; the former turned out
  to be more in line with people's thinking. To reduce code complexity and 
  potential for confusion I settled on the popular form and removed the other.
  Ditto for  ComplexChebyCoeff.
Made BasisFunc arbitray in dimension. Formerly fixed to 3d: u,v,w. This 
  required touching a lot of boilerplate BasisFunc code. Need to test it 
  better. Kept   u(), v(), w() calls around, might eliminate in future.
Added base flow term to computation of CFLfactor.
  

-------------------------------------------------------------------------
Channelflow-0.9.16  Sun Oct 16 11:14:19 EDT 2005

Added utilfuncs.h,cpp for various low-level and flowfield-level functions
that I need for my research, but which might be of use to others. 

Added global ints for version numbers
  int CHANNELFLOW_MAJOR_VERSION
  int CHANNELFLOW_MINOR_VERSION
  int CHANNELFLOW_UPDATE_VERSION

FlowField changes
  binary IO now writes in bigendian byte order
  binary IO now writes/checks channelflow version numbers --see header for use
  binary IO tries "filebase" if "filebase.ff" fails to open
    this currently doesn't work as expected; need to read up on iostream states
  removed a good deal of commented-out code
  regularized use of "mx" vs "nx" in several methods.
  changed quite a few numXgridpts() calls to Nx(), ditto numXmodes() and y,z
  change interpolate to go only to finer grids (this works correctly for sure).
  added Real L2InnerProduct(FlowField, FlowField)
 
Added int roundReal(Real x) function to round to nearest int.
-------------------------------------------------------------------------
Channelflow-0.9.15,  Fri Sep 30 10:03:10 EDT 2005

Bug fixes:           Fri Sep 30 10:03:10 EDT 2005

Fixed simple bug in cfarray.h: array<T>::binaryDump. 
Fixed an undefined operation Real(n)/Real(++n) in TimeStep::adjust(CFL, bool);
Apparently gcc-3.3.5 on x86 noticed neither.


Main work:           Tue Sep 27 22:25:04 EDT 2005

Changed default DNSFLags.nonlinearity to SkewSymmetric 
                DNSFlags.dealiasing   to NoDealiasing
                DNSFlags.timestepping to SBDF4
  This reflects wisdom inherited from elders.

Big change: Changed NSIntegrator to DNS, and split up DNS into a small class 
  hierarchy to manage the differences in DNS algorithms. DNSAlgorithm is the
  base class for different algorithms, such as MultiStepDNS, RungeKuttaDNS,
  and CNABstyleDNS. Those classes implement update algorithms, usually with 
  parameters that specify the specific form of RK or multistep algorithm (e.g.
  the order). Objects of the derived classes can be constructed and used 
  directly (i.e. by their own class names), or can use the DNS handle class.
  The DNS class works as a simplified user interface to the derived classes,
  by constructing one of the derived types internally and then calling its 
  virtual functions. (standard C++ technique).
DNS should be a drop-in replacement for NSIntegrator, except 
  (1) the reset functions have more consistent names (reset_dt, resetdPdx, etc)
  (2) there are new TimeStepMethods SBDF1-4, CNFE==SBDF1, and CNRK2
  (3) for algorithms that need a few initial timesteps, the first few steps
      are taken with a Runge-Kutta method. No user intervention required.
  (4) the initializing timestep algorithm is set via DNSFlags::timestepping.

NOTE: The LaTeX documentation has not yet been updated for the new DNS class.

Added simple templated array<T> class, file arraycfarray.h, used in DNS.
Added channelflow/validations/ directory, for validating Channelflow as a DNS
  against known problems like poisseuille, orrsomm, etc. Different purpose
  than examples dir, which should illustrate how to program.
Set ascii IO format to 17-digit scientific for Chebyshev,BasisFunc,FlowField
Changed Real Tausolver::kxLx_ member to two_pi_kxLx and added kx_ (ditto z)
Added PoissonSolver copy ctor
Changed CFL from L2Norm(ui/dxi) to L1Norm(ui/dxi);
Added bool pretty arg (default true) to FlowField::saveSpectrum(), orders by k
Added Complex FlowField::Dx(int kx), ditto Dz.
Allowed return of profiles from real-valued (Physical in xz) FlowFields.
Added int zero_last_mode(kx,kxmax,parity) to computations of FlowField diffs.
Change Complex z = x*I; to Complex(0.0, x); in a number of places.
Added ChebyTransfrom copy ctor and operator=.
Added L1Norm, L1Dist, LinfNorm, LinfDist for [Complex]ChebyCoeff and FlowField
Added fieldstate option to BasisFunc, ChebyCoeff, and ComplexChebyCoeff::save
Replaced true_norm(Complex z) w stdlib abs(z), norm2 w abs2, conjugate w conj
Changed order and typesetting of mathefs.h,cpp
Updated contact information.

-------------------------------------------------------------------------
Channelflow-0.9.14,  Wed Jun  8 12:21:45 EDT 2005

Changed RHS of PressureSolver from div nonl u (wrong) to -div nonl u.
DNSFlags constructor default arg for tau correction was sometimes misset.
FlowField:ygridpoints() didn't work for [a,b] != [-1,1]
Switched calls from misleading std lib norm(complex) to true_norm(Complex).

Removed LOG2 and log2 from mathdefs.h
Removed all variable names with leading underscores.
Changed some typesetting in mathedefs.h
Added IO mthods for DNSFlags.
Added default state arg to Chebyshev and ComplexChabyshev ctors.
Removed obsolete global const int MATLABVERSION.

-------------------------------------------------------------------------
Channelflow-0.9.13,  Wed May 25 12:05:29 EDT 2005

Main changes:
Regularized use of modenumber mx and wavenumber kx in FlowField.
Added many FlowField differential operators in new file diffops.{h,cpp}.
Moved Navier-Stokes nonlinearity calcs from FlowField methods to diffop funcs,
  revised NSIntegrator to use new functions in diffops.{h,cpp}.
Added PoissonSolver and PressureSolver classes.
Extensive additions to channelflow.tex documentation, mainly to clarify 
  regularization of mx,mz vs kx,kz, and match new calcs of NL terms.

Smaller changes:
Changed FlowField::profile functions to index on mode numbers (mx,mz).
Regularized divNorms and bcNorms: same syntax as L2Norm.
Added swap functions for Vector, ChebyCoeff, ComplexChebyCoeff.
Added diff(Chebyshev, n), diff(ComplexChebyshev, n) functions.
United various FlowField slice and crossSection methods into one slice func.
Changed recursive pow(int, int) into log N while-loop.

-------------------------------------------------------------------------
Channelflow-0.9.12,  Wed Mar 16 13:09:37 EST 2005

Changed vector.{h,cpp} to cfvector.{h,cpp} to avoid nameclash w gcc-3.3.
Modified FlowField binary IO to only save nonaliased modes when appropriate.
Changed method names in TurbStats to reduce confusion of U Umean, utot, etc.

-------------------------------------------------------------------------
Channelflow-0.9.11,  Wed Apr 21 15:19:42 EDT 2004

Removed orrsommfunc.{cpp,h}. These won't compile without Octave.
Fixed a bug in Chebyshev::makeState(fieldstate s) that called 
  ichebyfft instead of chebyfft in some cases. 
Added kxMaxDealiased (and kz) functions to NSIntegrator.

-------------------------------------------------------------------------
Channelflow-0.9.10,  Sat 01/31/04 at 21:34

Bugfix in NSIntegrator. Fixed a serious bug in NSIntegrator that had
  turned off tau correction in the time-stepping algorithm. I introduced
  the bug while converting from integer flags to the DNSFlags class in
  0.9.8.
 
-------------------------------------------------------------------------
Channelflow-0.9.9,  Mon Dec  1 12:13:21 EST 2003

Fixed bug in FlowField::nonlineritySkewSymmetric().
Added FlowField::nonlinerityConvection()
Added FlowField::nonlinerityDivergence()
Added Alternating convection/divergence option in DNSFLags and NSIntegrator.
Moved CFL calculation from nonlinearity methods to a function call 
  outside largest loop in NSIntegrator::advance. No need to make inner-loop
  CFL calc, plus it was inconvenient within some nonlinearity methods.
Revised manual to reflect added nonlinearity method.
  

