Name: Vladyslav Shtabovenko Date: 04/08/15-04:26:53 PM Z


A small correction to my previous announcement:

> Now FeynCalc is just one package and all its
> objects live in the context HighEnergyPhysics`FeynCalc`.

should actually read

> Now FeynCalc is just one package and all its
> objects live in the context FeynCalc`.

Sorry for the confusion.

Cheers,
Vladyslav

Am 08.04.2015 um 15:03 schrieb Vladyslav Shtabovenko:
> Dear FeynCalc users,
>
> the new commit
>
> <https://github.com/FeynCalc/feyncalc/commit/9365d4937c208d53d843568bb059f48e83cd3c26>
>
> to the git repository of FeynCalc introduces a lot of changes to the
> structure of FeynCalc that we would like to introduce in details here:
>
> 1) You might have been wondering, why FeynCalc must be installed to the
> directory “HighEnergyPhysics” and not just “FeynCalc”. Well, this used
> to be liked that for some legacy reasons but is actually not necessary
> nowadays. From now on FeynCalc lives in “FeynCalc” and
> it is started simply via “<<FeynCalc`”
>
> 2) The internal structure of FeynCalc got completely refactored to
> simplify the maintenance and avoid problems with Mathematica’s
> autocompletion. Before that FeynCalc actually consisted of hundreds of
> separate packages (each .m file was a package). Loading that number of
> packages in one session was freezing Mathematica’s auto-complete. This
> should not occur anymore. Now FeynCalc is just one package and all its
> objects live in the context HighEnergyPhysics`FeynCalc`. This allows us
> to get rid of the (error-prone) tricks with MakeContext and CheckContext
> that we had in the source code before. Furthermoe, the directory
> structure was adjusted to be compatible with the standard layout in
> Wolfram Workbench, which is the state of the art tool to develop large
> Mathematica packages.
>
> 3) Much of the source code (although not everything yet) is now nicely
> formatted.
>
> 4) The directory structure inside HighEnergyPhysics is now organized in
> the following way
> * “AddOns”: small user addons for FeynCalc
> * “Database” : contains cached results for user’s computations
> * “Dirac”: tools for Dirac algebra
> * “Documentation”: contains package documentation
> * “Examples”: sample computations with FeynCalc that reproduce known
> results from the literature
> * “ExportImport”: tools for exchanging results between FeynCalc and
> other tools
> * “FeynArts”: contains patched FeynArts
> * “Feynman” : tools for dealing with S-matrix elements, including
> derivation of Feynman rules and computation of the matrix element squared
> * “Kernel”: related to the way Mathematica loads packages
> * “LoopIntegral”: tools for loop integrals
> * “Lorentz”: tools for working with quantities that carry Lorentz
> indices and for dealing with the kinematics
> * “Misc” : for routines that don’t fall into any other category.
> * “NonComAlgebra”: general functions for non-commutative objects
> * “Phi”: contains Frederik Orellana’s PHI
> * “QCD” : tools for QCD OPE calculations (still poorly tested and
> documented)
> * “Shared”: general objects (e.g. Pair, DiracGamma, SUNF) and functions
> (e.g. FreeQ2, SelectFree, Factor2) that are widely used by other parts
> of the FeynCalc code.
> * “SUN”: tools for SU(N) algebra
> * “Tables”: database with various analytic expressions
> * “Phi”: contains TARCER by Rolf Mertig and Rainer Scharf
>
> 5) Since FeynCalc now always loads all its .m files, we squashed some
> (short) functions into common files. For example, Apart1, Apart2 and
> Apart3 now live in Apart.m. This is done to keep the time FeynCalc needs
> to load reasonably small.
>
> 6) Options parsing in many functions have been improved to use the
> modern MMA’s OptionsPattern - OptionValue paradigm.
>
> 7) The number of unit tests have been increased. Although we are still
> far away from the full code coverage, with more than 2700 unit test we
> are doing quite good.
>
> 8) FeynCalc tabulates many expressions that can be requested by the
> user, e.g. Lagrangians. To make it easy for the user to work with these
> expressions, FeynCalc returned them with indices and variables in the
> Global` context. However this also means that when FeynCalc is loaded,
> it puts a lot of objects into the Global` context where they may clash
> with user-defined functions. To solve this problem we introduced a new
> object: FCGV which is acronym for FeynCalc Global Variable. The syntax
> is FCGV[x_String]. From now on, variables that used to be returned as
> Global`VariableName will be outputted as FCGV[“VariableName”]. You will
> nottice them in your expressions as having FCGV around them, i.e.
> FCGV[“p”] will be displayed as FCGV(p). You can always convert such
> objects to “normal” variables via the replacement rule {FCGV[x_String]
> :>ToExpression[x]} We understand that this additional step may pose some
> inconveniences to you, but from the point of view of Mathematica
> programming and interoperability between different packages, this
> solution seems to be the cleanest way to avoid troubles in future.
>
> For example, Lagrangian[“QCD”] now returns
>
> -(1/4) FieldStrength[FCGV[”\[Alpha]”], FCGV[”\[Beta]”],
> FCGV[“a”]].FieldStrength[FCGV[”\[Alpha]”], FCGV[”\[Beta]”],
> FCGV[“a”]]
>
> instead of
>
> -(1/4) FieldStrength[\[Alpha], \[Beta],
> a].FieldStrength[\[Alpha], \[Beta], a]
>
> as it used to be. Now suppose that before invoking Lagrangian[“QCD”] you
> defined \[Alpha] = 1/137. With the new output using FCGV nothing
> changes. With the old output
> you would have got
>
> -(1/4) FieldStrength[1/137, \[Beta], a].FieldStrength[1/137, \[Beta], a]
>
> which is clearly not what you want.
>
> 9) To circumvent problems related to the patching of FeynArts, from now
> on FeynCalc will look for FeynArts only in the directory “FeynArts”
> inside “HighEnergyPhysics”. Nevertheless, it is still possible to
> specify an alternative directory by setting
> FeynCalc`$FeynArtsDirectory=”path” before loading FeynCalc. The patching
> code was moved to FeynCalc, i.e. now it will run even when Phi is not
> loaded.
>
> 10) The TARCER notebook have been converted into a source file
> (“TARCER.m”). Furthermore, generated TARCER*.mx files are not
> distributed anymore with the source code. When you first try to load
> TARCER, a dialog will appear with the suggestion to generate the .mx
> file now. This process has to be done only once and takes only a couple
> of minutes. After that, the generated .mx will be automatically loaded
> whenever you want to use TARCER.
>
> 11) Prior to this commit FeynCalc used to switch the format of output
> cells to TraditionalForm. Now it will only issue a
> warning message suggesting the user to do this by himself or herself.
> Such messages can be disabled by setting $FCAdvice to False.
> So if you despise all the fancy typesetting and prefer to work with
> StandardForm, FeynCalc will respect your decision.
>
> 12) To avoid clashes with built-in functions of recent Mathematica
> versions, we had to rename
> some FeynCalc functions:
>
> PartialD -> FCPartialD
> Symmetrize -> FCSymmetrize
> AntiSymmetrize -> FCAntiSymmetrize
>
> Cheers,
> Vladyslav
>