[ET Trac] [Einstein Toolkit] #1627: Merge rewrite branch of McLachlan

Einstein Toolkit trac-noreply at einsteintoolkit.org
Mon Jan 26 09:56:44 CST 2015


#1627: Merge rewrite branch of McLachlan
------------------------------------+---------------------------------------
  Reporter:  eschnett               |       Owner:                     
      Type:  enhancement            |      Status:  new                
  Priority:  major                  |   Milestone:                     
 Component:  EinsteinToolkit thorn  |     Version:  development version
Resolution:                         |    Keywords:                     
------------------------------------+---------------------------------------

Comment (by hinder):

 I have looked at the code on the rewrite branch and have a few
 comments/suggestions.

 Performance:

     * I would like to see performance benchmarks of the code on both
 branches before making such a drastic change.  These should ideally
 include typical uses, e.g. finite difference orders 4, 6 and 8, and for 8,
 also with multipatch (Jacobians).  Initially, just one standard Intel HPC
 machine would be enough to see if there were large regressions.  A large
 amount of work went into optimising the master branch, and there is a risk
 that this work could be lost.
     * The old version allowed a version of the code to be generated which
 had kranc dissipation which could be efficiently omitted if
 apply_dissipation was "no".  The new version requires this choice to be
 made at kranc time, or to have a version which always computes the
 dissipation.  In the default, the dissipation terms are added
 unconditionally.  These can be extremely expensive; the Dissipation thorn
 is much more efficient (due to the way the looping is done in Kranc, I
 think).  I would prefer the default for krancDissipation to be 0, and
 people should be encouraged to use the Dissipation thorn, until
 dissipation is implemented more efficiently in McLachlan/Kranc.
     * As far as I can tell, the split of the advection terms into separate
 calculations has been lost in the rewrite.  This was done for performance
 reasons after benchmarking, and made a big difference at the time.  I
 expect it to still make a big difference.

 Cosmetic:

     * Why does ML_confac_bound have an ML prefix?  Why not "phiW_bound"?
     * FromBSSNCalc seems to be strangely named.  I would have expected
 something to do with "RHS" or "evolution".  Probably "RHS".
     * There are three different conformal factors in common use: the
 original BSSN phi, chi as introduced by Brownsville, and W as introduced
 by Florida Atlantic.  The current scheme of concatenating the names of the
 two implemented interpretations of the variable to make "phiW" from "phi"
 and "W" does not nicely scale to include chi.  If renaming the variable
 anyway, I think I would prefer it to be called "cf" or "confac" or
 similar.
     * If changing parameter names anyway, we might want to follow the
 Cactus conventions and use lowercase names separated by underscores.  This
 can be done by wrapping the string name in Parameter.  e.g.
 Parameter["advect_lapse"].  If this makes the code less readable, we could
 set advectLapse as a Mathematica variable advectLapse =
 Parameter["advect_lapse"] and then use advectLapse in the equations.  This
 functionality should work already.  There may be some rough edges, but we
 only get to introduce new parameter names once, and we will have to live
 with them for a long time, so it might be worth getting parameter names
 that we like.
     * Do we still need to have a separate helper thorn?  It seems to me
 that with the MergeFiles functionality in Kranc, this is not necessary.
 We would still provide a null helper thorn so that old parameter files
 work, but I think everything could go into ML_BSSN.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1627#comment:3>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list