   BRUCE Changes File

  10/10/95 - The phi component of the observer vector had the wrong sign (
             it was positive rather than negative), leading to very 
             peculiar output. Fixed

  11/10/95 - bmakeg now works out the number of visible points on the star,
             which does not change with time. This is written out first to
             all raw files so that kylie will 'know' how many quints to read
             in - much better than waiting for eof. Also written out in the
             header is the time of the calculation.
           - the .kylie.com file is no longer used - instead, kylie is just 
             supplied with a number of fields and a filestub and works it all
             out from there. This is because
           - the start_field and end_field commands are no longer implemented,
             since they were a bit of a kludge
           - raw files are not now $$$$$$.raw.XXX but $$$$$$XXX
	    - I've increased the size of string from 40 to 80 coz it seemed a bit small

  4/12/95  - Off-axis modes can now be produced. Basically, any off axis mode with
             parameters l,m may be written as a sum of on-axis modes with parameters
             l and m'=-l...+l. To use off-axis modes, firstly, the POLAR_AXIS_OFFSET
             parameter must appear in the #Stellar command specifying the angle between
             the rotation axis and the polar axis (in degrees). Then, one must define
             a mode for every m' required in the sum above and include in each #Mode 
             command the parameter OFFSET_M_VALUE specifying the value of m each mode
             is supposed to make an off-axis mode for. Obviously, doing off-axis modes
             requires many more mode definitions, so maxmde has been upped to 20.
           - The off-axis calculations have an inherent problem: since they invariably
             involve an m=0 mode, there are problems generating a W matrix for such a
             mode. For m=0 modes, the W-matrix will contain l=0 terms which generate
             singularities whilst doing the matrix generation - this causes the program to
             crash. Consequentially, an explicit check is made to see if lsdeff is true or false,
             and when it is false, the expansion vectors are set up properly, coping with m=0 modes,
             (which the Lee & Saio theory cannot handle anyway), and blojob has been modified so
             that off-axis modes and Lee & Saio modes are mutually exclusive. The expansion vectors
             are set up using the new routine lsdvharm, which sets radvec and horvec to be the
             spherical harmonic normalizing factor x delta(j_mode,j_vector); torvec is set to 0. 

  6/12/95  - The off-axis calculation seems to be working (sort of). Note that to get an off-axis
             mode, all of the contributing modes must have the same *corotating* frequency - not
             the same observer's or super- period, as one may think. However, there is a possible
             problem - I think there might be an anomalous 180 deg phase shift on the position
             of the off-axis mode axis. To help correct this, bruce now AUTOMATICALLY writes
             out auxilary file with the format $$$$$$XXX.aux which contain Theta, Phi, Inclination,
             VRad, VProj and Temp. information, which may be used to construct a graphical image of the star
             These new files have a new file handle ahandl

           - New Note: The writing out of the aux files seems to work, and has confirmed that the angle
             of the off-axis is out by 180 degs. I suspect this is because my routines do not adhere to
             the Condon & Shortley phase convention, so they do now! Fingers crossed....and it works -whew!

           - New note: R/REq is written out to the auxilary files, becuase of course the star is not a sphere,
             rather an oblate spheroid. To allow the programs which deal with the aux files to mark the pole,
             Rpole/REq is now also written out, in the header.

  7/12/95  - Done some tidying up to the new off-axis code and the new auxilary files. The aux files no
             longer have the field time written out in the header (it is unnecessary), and they are not
             automatically written out; in the fields command, there is a new parameter WRITE_AUX_FILES
             which instructs bruce to write out aux files with the naming convention above; if this parameter
             is not present, aux files will not be written out. For the off-axis stuff, I have changed
             the names of the commands to correspond to roAp models.

  12/2/96  - Changed the format specifier in the output stuff for velocity coz it woz overflowing

  15/4/96  - Added a routine (lsdgetmax) and some stuff in blojob so that by specifying the
             PHYSICAL_AMPLITUDES fields option, the amplitudes are taken to be physical peak amplitudes
             rather than mathematical amplitudes. This is achieved for each mode individually by
             dividing the user's amplitude by the maximum physical amplitude of a pulsation with
             mathematical amplitude 1. By maximum, I do max(Radial,Theta,Phi) at each colatitude, so
             it is not maximum in the strictest sense of the word.

  20/5/96  - Modified lsdgetmax. Originally, the velocities were normalized by the largest of the
             radial, theta and phi velocities. However, this normalisation is not a smooth function
             of K, and introduces structure where there is none. Accordingly, each mode is normalised
             by the maximum velocity MODULUS over the stellar surface.

  4/9/96   - Allowed the user to specify the degree of gravity darkening using the ZEIPEL_BETA parameter
             in the #STELLAR command. The value defaults to 0.25

  2/26/97  - The temperature effects have been modified to take into account the Lee&Saio stuff. Also,
             the Lee&Saio: parameter has been changed to the MATRIX_DIMENSION: parameter,

  5/5/97   - Removed all DEC Fortran stuff, and modified the source so that parameter
             files are read in from standard input

  18/7/97  - Moved all lsd routines to separate lsd library, and renamed lsdgetmax to bgetmax

  31/7/97  - Version 2.71 released

  12/8/97  - I discovered today that there is a small error in the bruce
             user manual (section F.2 of my thesis). The parameter
             "use_mode_parameter" in the #timings command description
             should read "use_mode_period".

  12/8/97  - I also found out (thanks to an observant user) today that the 
             "stellar_mass" parameter led to a run-time error. Upon inspection,
             I have discovered that the code dealing with it was broken, as
             was the code for the "polar_mks_gravity", so I fixed everything.
             Note that these bugs just stopped bruce from running - they didn't
             lead to erroneous results.

  23/12/98 - Added a new TIMINGS parameter INCLUDE_ENDPOINTS which signifies that start and end spectra
             should be calculated at the start and end times, and equally spaced between, rather than
             calculated at the mid-points of equal-sized time-chunks. The latter puts the start and end
             spectra half a time-step in from the time endpoints, and is the "traditional" behaviour.

  23/12/98 - Added a new TIMINGS parameter WRITE_TIMINGS_FILE which signifies that a space-separated
             list of dump files and their times should be written to the file $$$$$$$.times

  25/1/99  - Added a new TIMINGS parameter TIMINGS_FROM_FILE which allows the times of all the field
             calculations to be specified in a file as a list. The argument of the parameter is the
             file name. Note that this is separate from WRITE_TIMINGS_FILE, which is for writing
             times OUT rather than reading them in. This parameter is exclusive with START_TIME,
             FINISH_TIME, INCLUDE_ENDPOINTS and NUMBER_OF_FIELDS, since the file contains all
             of this information. This change has made it necessary to now store all field times
             in the array Times, which is set up in blojob.f.

  25/1/99  - Version 2.8 released

  18/2/99  - Added in stuff to indicate the maximum size of radius variations for each field
             This required a new variable - dRMax

  18/2/99  - Added in stuff to indicate the maximum size of temperature for each field
             This required a new variable - dTMax

  14/6/99  - Added a new MODE parameter HORIZONTAL_PHASE_SHIFT to allow phase shifts in the horizontal 
             velocity fields to be modelled (this is primarily for simulations of wave leakage)

  14/6/99  - Changed the reporting information written out, so that the effective temperature
             (=(Luminosity/(Sigma*Area))**0.25) is printed instead of the equal volume radius

  13/10/99 - Radically changed the reporting used in breprt() to use FORMAT statements rather than
             character constants, in order to make the code more portable. Also moved various 
             output statements around in this file

  22/05/00 - Deleted the variable AAmode, and introduced a new one in its place - TAmode.
             This gives the amplitude of fractional temperature perturbations (when combined
             with the angular basis function RBasis). If it is zero, then the original
             Buta & Smith (1979) expression is used to calculate the amplitude (the original
             behaviour). The command language has been modified accordingly - instead of
             using NA_AMPLITUDE_SHIFT, use TEMPERATURE_AMPLITUDE. Temperature perturbations 
             can be turned off completely by *not* specifying the TEMPERATURE_EFFECTS
             parameter

  22/05/00 - The variable APmode (non-adiabatic temperature phase shift) has been renamed
             to TPmode ("temperature-phase"), and the parameter NA_PHASE_SHIFT has been
             renamed to TEMPERATURE_PHASE

  22/05/00 - Changed the way the horizontal velocity fields are handled, to bring them in
             line with the way temperature perturbations are handled. The new variable HAmode
             gives the amplitude of horizontal velocity fields (when combined with the
             angular basis functions). If it is zero, then the amplitude is taken from the
             value of K. To set HAmode, use the HORIZONTAL_VELOCITY_AMPLITUDE parameter. Horizontal
             velocity fields can be turned off completely by *not* specifying the 
             HORIZONTAL_VELOCITY_FIELDS parameter. Note that this functionality replaces
             that originally offfered by the K_VALUE_OVERRIDE parameter; the latter has
             been deleted.

  22/05/00 - Renamed the HORIZONTAL_PHASE_SHIFT parameter to HORIZONTAL_VELOCITY_PHASE, to
             bring it in line with the way temperature perturbations are handled

  25/05/00 - Removed the PERIOD_FROM_NU parameter, and replaced it by the NU parameter, which
             just fundges the adopted value of NU; this involdes the new variable numode. If
             numode is zero, the nu is calculated using the usual expression nu=2Omega/omega.
             Rotational effects can be turned off completely by *not* specifying the
             MATRIX_DIMENSION parameter

  08/06/00 - Noticed that, somewhere along the way, TIMINGS_FROM_FILE (see above) has been
             renamed to READ_TIMINGS_FILE - oops!

  08/06/00 - Changed the way field calculations are reported in the output

  19/06/00 - Version 2.83-1 released

  24/07/00 - Altered the interpretation of TEMPERATURE_AMPLITUDE. Previously, it meant the
             relative amplitude of temperature perturbations; now, it acts as a conversion
             factor between the fractional radius and temperature perturbation amplitudes.
             Basically, it is the equivalent of the dR/R coefficient in the Buta & Smith
             adiabatic dT/T expression

  03/08/00 - Discovered two errors in the lsdfdhor.f/lsdfdtor.f functions of the liblsd 
             library. These functions calculate the derivatives with respect to theta
             of the lsdfhor.f (horizontal displacement) and lsdftor.f (toroidal displacement)
             functions, respectively. The first error led to incorret results for (l>0,m=0) modes,
             whilst the second led to incorrect results for all (l-|m|>0) modes. I've verified
             that the functions now work for l<=4 modes (and there is no reason to expect
             that they won't work for ALL modes). The physical implications of the errors
             were erroneous horizontal velocity field eigenfunctions. Thanks to Joris
             De Ridder for spotting the problem. I guess this goes to show that BRUCE still
             may have bugs!

  03/08/00 - Version 2.83-2 released

  20/09/00 - Put in stuff to include pressure perturbation terms. These are modeled by 
             including gravity perturbations, such that the relative Lagrangian gravity
             perturbation is equal to the relative Lagrangian pressure perturbation.
             Pressure perturbations are switched on by putting a PRESSURE_EFFECTS
             term in the #fields command. The amplitude and phase of the pressure
             perturbations, relative to the fractional radius perturbations, may be set 
             using the PRESSURE_AMPLITUDE and PRESSURE_PHASE parameters in the #mode
             command (analogously to temperature perturbations). If neither of these
             are set, then Dziembowski's (1971) outer boundary condition is used to
             get the values. New variables introduced are PAmode, PPmode, PreEff and
             others

  29/11/00 - Discovered that the fix to lsdfdhor.f and lsdfdtor.f also needed to be made
             to lsdfdrad.f (which is used in calculating surface area/normal perturbations).
             This means that surface area/normal perturbations were incorrect for all m=0
             modes, and also modes with (l-|m|>0). This problem was detected because calculations
             for m=0 modes were giving NaNs for the projected surface area of grid points.
             These NaNs, however, only occured on a Linux box (not an Alpha), since Linux
             g77 does not initialise variables to zero.

  29/11/00 - Realised that the lsdfdhor.f/lsdfdtor.f/lsdfdrad.f problems will have affected ALL
             modes if the MATRIX_DIMENSION parameter was specified (ie, if rotational effects
             were used). This is because, for a mode with given m, the Coriolis force mixes in
             modes with all values of l, including the ones which were incorrectly calculated).
             This realization doesn't require any bug-fixes, but means that the scope of the
             problem is much larger than previously realised. 

  30/11/00 - Version 2.84-1 released

  24/01/01 - Found a problem with the way area perturbations are handled in the main program
             (bruce.f). It seems there was a missing RecpPi (=1/sqrt(2*pi)) factor on the theta-
             component of the area perturbations, which is definitely required. Shouldn't be
             important to spectroscopy, but introduces errors (at about a 20% level) when one
             is doing photometry

  24/01/01 - Version 2.84-2 released in light of above bug

  27/08/01 - Fixed a bug in the calculation of GEffR, where sin(theta) appeared instead of 
             sin(theta)**2 (thanks to Armando De Souza for finding this one)

  27/08/01 - Modified the diagnostic output so that the maximum and minimum gravity are written 
             out

  27/08/01 - Version 2.84-3 released

  17/04/02 - Added reporting of the von Zeipel beta to breprt.f

  20/04/02 - Put in stuff to turn off rotational deformation of the stellar grid. This can be
             acheived by putting a NO_DEFORMATION term in the #stellar command. This has the
             effect of (implicitly) setting the rotation rate to zero when calculating the
             stellar surface. Note that no gravity darkening will occur when rotational 
             deformation is turned off!

  20/04/02 - Modified parts of blojob.f so that an error is thrown if switch parameters 
             (ie, ones without associated values) contain spurious trailing characters

  20/04/02 - Added reporting of the rotational deformation switch to breprt.f

  26/6/02  - Modified the code in blojob.f, dealing with the #Stellar command, so that it works
             correctly when two out of three of POLAR_RADIUS, POLAR_LOG_GRAVITY (or
             POLAR_MKS_GRAVITY) and STELLAR_MASS are defined

  26/6/02  - Added code to blojob.f to support a new #Stellar parameter, CRITICAL_VELOCITY_FRACTION.
             This parameter, which is mutually exclusive with EQUATORIAL_VELOCITY, allows
             the equatorial velocity of the star to be set based on a fraction of the
             critical velocity

  03/7/02  - Renamed the NO_DEFORMATION parameter to NO_CENTRIFUGAL_FORCE, which represents better
             how this parameter works (ie, specifying NO_CENTRIFUGAL_FORCE supresses the centrifugal
             in calculating the equilibrium stellar gravity and surface radius). The internal 
             switch RotDef now becomes CenFrc

  09/7/02  - Added code to blojob.f to support a new #Stellar parameter, STELLAR_LUMINOSITY.
             This parameter, which is mutually exlusive with POLAR_TEMPERATURE, allows the
             temperature distribution of the star to be set up so that the bolometric
             luminosity has the specified value (in solar units)

  09/08/04 - Modified the tests to see if a grid point is visible; the code now checks on the 
             perturbed cosine factor (cosMu), rather than the unperturbed one. This should fix 
             problems with negative cosMu values being written out to dump files

  09/08/04 - Version 2.84-4 released
