.Dd $Mdocdate: June 6 2022 $ .Dt meantools 1.5 .Os .Sh NAME .Nm meantools .Nd A tool to manipulate flow equations .Sh SYNOPSIS .Nm .Sy differentiate .Op Fl d Ar nderivs .Op Fl V Ar variables .Op Fl C .Op Ar config_file .Pp .Nm .Sy eval .Op Fl R Ar values .Op Fl P Ar precision .Op Fl E Ar max_exponent .Op Ar config_file .Pp .Nm .Sy expand .Op Fl N Ar namespace .OpAr config_file .Pp .Sh DESCRIPTION .Nm performs various operations on flow equations generated by .Sy meankondo. Namely, it can differentiate and evaluate flow equations, as well as perform elementary operations on polynomials. .Pp .Nm is part of a set of tools to compute and manipulate Fermionic hierarchical flows: .Bl -bullet .It .Sy meankondo : computes flow equations for hierarchical Fermionic models .It .Sy numkondo : numerical evaluation of flow equations. .It .Sy meantools, meantools-convert : perform various operations on flow equations (differentiation, products, sums, exponentials and logarithms of flow equations, evaluation and conversion to other formats). .El .Pp .Sh DIFFERENTIATE When run with the 'differentiate' command, .Nm computes derivatives of a flow equation provided in the configuration file, which can either be passed as a command-line argument or through stdin. .Pp The derivatives are derivatives with respect to an extra virtual parameter, which all of the rccs are assumed to depend on (to override the default behavior, the '-V' flag can be used to pass a list of rccs that depend on the extra parameter, alternatively such a list can be given in the configuration file). The derivative of the flow equation is a new flow equation for the rccs and their derivatives with respect to the virtual parameter. .Pp When multiple derivatives are taken, the flow equation becomes a flow equation for the rccs, their derivatives, second derivatives, and so forth... .Pp This operation can be useful, for instance, to compute moments in an interacting system, in which the generating functional can be expressed as an effective potential depending on a parameter with respect to which the result of the integration should be differentiated. The 'differentiate' command writes the flow equation for the differentiated rccs, from which the quantities of interest can be computed. .Pp .Sy Command-line arguments: .Bl -tag -width Ds .It Fl d Ar nderivs Number of derivatives (defaults to 1) .It Fl V Ar variables The variables that depend on the extra virtual parameter (defaults to all) (WARNING: if one of the variables has a negative index, do not put it first in the list, since .Nm would interpret the argument as being a flag, for example, write '-V "0,-1"' instead of '-V "-1,0"'). .Pp Can either be a ',' separated list if indices or 'all' to differentiate with respect to all available variables. .It Fl C Format the output so it can be piped to .Sy numkondo , that is, instead of printing the flow equation, print a full configuration file containing the flow equation as well as all the other entries of the configuration file that do not pertain to the computation of the flow equation. .El .Pp .Sy Configuration file: .Pp The configuration file contains the flow equation to differentiate, and optionally a list of variables (similar to the '-V' flag). The following entries are supported: .Bl -tag -width Ds .It Sy #!flow_equation The flow equation to differentiate. .Pp The syntax is identical to that in .Sx numkondo Ns (1) . .Pp If this entry is the only one in the configuration file, the '#!flow_equation' header may be omitted. .Pp .It Sy #!variables The variables that depend on the extra virtual parameter (optional entry). .Pp The variables entry is a ',' separated list of indices, or 'all' in which case, all of the variables on the right side of the flow equation are assumed to depend on the flow equation. .Pp If the '-V' flag is provided on the command-line, this entry is ignored. .El .Pp The resulting flow equation is written to stdout. .Pp .Sh EVAL When run with the 'eval' command, .Nm evaluates a flow equation, provided in a configuration file, numerically, using the values provided on the command-line or in the configuration file provided on the command-line or through stdin. .Pp .Sy Command-line arguments: .Bl -tag -width Ds .It Fl R Ar values The values of the rccs with which to evaluate the flow equation. .Ar values is formatted like an initial_condition (see .Sx numkondo Ns (1) ) . .It Fl P Ar precision Number of bits used for the significand of numerical values (see .Sx numkondo Ns (1) ) . .It Fl E Ar max_exponent Largest allowed value for the exponent of numerical values (see .Sx numkondo Ns (1) ) . .El .Pp .Sy Configuration file: .Pp The configuration file contains the flow equation to evaluate, and optionally a list of values for the rccs. The following entries are supported: .Bl -tag -width Ds .It Sy #!flow_equation The flow equation to evaluate. .Pp The syntax is identical to that in .Sx numkondo Ns (1) . .Pp If this entry is the only one in the configuration file, the '#!flow_equation' header may be omitted. .Pp .It Sy #!initial_condition The value on which to evaluate the flow equation (optional entry). .Pp The syntax is identical to that in .Sx numkondo Ns (1) . .Pp If the '-R' flag is provided on the command-line, this entry is ignored. .El .Pp The result of the evaluation is written to stdout, and is formatted is such a way that it can be used as an initial condition for .Pp .Sh EXPAND When run with the 'expand' command, .Nm expands the preprocessor variables in the input polynomial, provided in the configuration file, which can either be passed as a command-line argument or through stdin, and prints the result. .Pp .Sy Command-line arguments: .Bl -tag -width Ds .It Fl N Ar namespace If the configuration file is to be used to perform other operations, it may be convenient to specify the input polynomial for the 'expand' command alongside another '#!input_polynomial' entry, used for some other computation. This is made possible by namespaces. .Pp If a namespace is provided to .Nm on the command line, then it will search for the entries in the configuration file in the form .D1 #!namespace:header and default to #!header if no such header is present. .Pp In this way, the configuration file can, for instance, contain a '#!namspace:input_polynomial' entry for this computation, as well as a '#!input_polynomial' entry, to be used for some other purpose, all the while using the same '#!fields', '#!preprocessor_variables', '#!virtual_fields' and '#!identities' entries. .El .Pp .Sy Configuration file: .Pp The supported entries are .Bl -tag -width Ds .It Sy #!input_polynomial The polynomial whose exponential is to be computed. .Pp .It Sy #!fields The fields appearing in the polynomial. .Pp .It Sy #!preprocessor_variables Preprocessor variables (optional entry). .Pp .It Sy #!virtual_fields Virtual fields (optional entry). .Pp .It Sy #!identities identities between fields (optional entry). .El .Pp The result is written to stdout. .Pp .Sh SEE ALSO .Sx meankondo Ns (1) , .Sx numkondo Ns (1) , .Sx meantools-convert Ns (1) , .Pp