The update to version 1.5 is rather substantial, and introduces some minor backward-incompatibilities: * The header "#!symbols" has been replaced by "#!virtual_fields" * Multiplying polynomials using the '*' symbol is no longer supported (or, rather, the symbolic capabilities of meankondo were enhanced, and the syntax has been changed). * 'meantools exp' has been removed (its functionality is now handled by other means) * 'meantoolds derive' has been replaced by 'meantools differentiate' * The symbolic capabilities were enhanced: polynomials can now be multiplied, added, exponentiated, and their logarithms can be taken directly in the configuration file. * The flow equation can now be processed after being computed using the various "#!postprocess_*" entries. * Deprecated kondo_preprocess. * Compute the mean using an LU decomposition if possible. * More detailed checks for syntax errors in configuration file. * Check that different '#!group' entries are indeed uncorrelated. * New flags in meankondo: '-p' and '-A'. * New tool: meantools expand. * Improve conversion to LaTeX using meantools-convert * Assign terms randomly to different threads. * Created vim files to implement syntax highlighting for configuration files. * Multiple bug fixes
76 lines
2.8 KiB
C
76 lines
2.8 KiB
C
/*
|
|
Copyright 2015-2022 Ian Jauslin
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
/*
|
|
Parse the input file
|
|
*/
|
|
|
|
#ifndef PARSE_FILE_H
|
|
#define PARSE_FILE_H
|
|
|
|
#include "types.h"
|
|
|
|
// read a positive integer from a string
|
|
int read_positive_int(char* str, int* out);
|
|
// read an integer from a string
|
|
int read_int(char* str, int* out);
|
|
// read an long int from a string
|
|
int read_long_int(char* str, long int* out);
|
|
// read a long double
|
|
int read_long_double(char* str, long double* out);
|
|
|
|
|
|
// parse fields list
|
|
int parse_input_fields(Char_Array str_fields, Fields_Table* fields);
|
|
|
|
// parse virtual_fields list
|
|
int parse_input_virtual_fields(Char_Array str_virtual_fields, Fields_Table* fields, Variables variables);
|
|
|
|
// parse groups of independent fields
|
|
int parse_input_groups(Char_Array str_groups, Groups* groups, Polynomial_Matrix propagator, Fields_Table fields);
|
|
// check that the members of groups are independent (assuming the virtual_fields and propagator were already parsed)
|
|
int check_groups(Groups groups, Polynomial_Matrix propagator, Fields_Table fields);
|
|
// list of fields involved in a list of virtual_fields
|
|
int fields_in_virtual_field_list(Int_Array indices, Fields_Table fields, Int_Array* output);
|
|
|
|
// parse variables list
|
|
int parse_input_variables(Char_Array str_variables, Variables* variables);
|
|
|
|
// parse identities between fields
|
|
int parse_input_identities(Char_Array str_identities, Fields_Table* fields, Variables variables);
|
|
|
|
// parse propagator
|
|
int parse_input_propagator(Char_Array str_propagator, Polynomial_Matrix* propagator, Fields_Table fields);
|
|
|
|
// parse input polynomial
|
|
int parse_input_polynomial(Char_Array str_polynomial, Polynomial* output, Fields_Table fields, Variables variables);
|
|
|
|
// parse id table
|
|
int parse_input_id_table(Char_Array str_idtable, Id_Table* idtable, Fields_Table fields, Variables variables);
|
|
|
|
// parse a list of labels
|
|
int parse_labels(Char_Array str_labels, Labels* labels);
|
|
|
|
// read initial condition for numerical computation (using either RCC or RCC_mpfr, as specified by mpfr_flag)
|
|
int parse_init_cd(Char_Array init_cd, RCC* init, RCC_mpfr* init_mpfr, int mpfr_flag);
|
|
|
|
// set indices and length of init
|
|
int prepare_init(int* indices, int length, RCC* init);
|
|
// set indices and length of init for RCC_mpfr
|
|
int prepare_init_mpfr(int* indices, int length, RCC_mpfr* init);
|
|
|
|
#endif
|