meankondo/src/parse_file.h
Ian Jauslin 3f0510629e Update to v1.5.
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
2022-06-14 09:46:36 +02:00

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