/* 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. */ /* Generate configuration files specific to the Kondo model */ #ifndef KONDO_H #define KONDO_H #include "types.h" // generate configuration file int kondo_generate_conf(Str_Array* str_args, int box_count); // generate the Kondo fields table int kondo_fields_table(int box_count, Char_Array* str_fields, Fields_Table* fields); // generate Kondo virtual_fields int kondo_virtual_fields(Char_Array* str_virtual_fields, int box_count, Fields_Table* fields); // generate Kondo virtual_fields (older method: one virtual_field for each scalar product) int kondo_virtual_fields_scalarprod(Char_Array* str_virtual_fields, int box_count, Fields_Table* fields); // generate Kondo groups (groups of independent variables) int kondo_groups(Char_Array* str_groups, int box_count); // generate Kondo identities int kondo_identities(Char_Array* str_identities); // convert the Kondo propagator int kondo_propagator(Char_Array str_kondo_propagator, Char_Array* str_propagator); // read a product of polynomials int parse_kondo_polynomial_factors(Char_Array str_polynomial, Polynomial* output, Fields_Table fields); // convert Kondo input polynomial int kondo_input_polynomial(Char_Array str_kondo_polynomial, Char_Array* str_polynomial, Fields_Table fields, int box_count); // convert the Kondo idtable int kondo_idtable(Char_Array str_kondo_idtable, Char_Array* str_idtable, Fields_Table fields); // read a kondo polynomial and convert it to a polynomial expressed in terms of the fields in the fields table int parse_kondo_polynomial_str(char* str_polynomial, Polynomial* output, Fields_Table fields); int parse_kondo_polynomial(Char_Array kondo_polynomial_str, Polynomial* polynomial, Fields_Table fields); // read Aij, Bij, hi where i is a space dimension and j is a box index int kondo_resolve_ABht(char* str, Polynomial* output, Fields_Table fields); // read a Kondo scalar product int kondo_resolve_scalar_prod(char* str, Polynomial* output, Fields_Table fields); // compute a scalar product of polynomial vectors int kondo_polynomial_scalar_product(Polynomial poly_vect1[3], Polynomial poly_vect2[3], Polynomial* output, Fields_Table fields); // compute a vector product of polynomial vectors int kondo_polynomial_vector_product(Polynomial (*poly_vect1)[3], Polynomial poly_vect2[3], Fields_Table fields); // compute the 3 components of a kondo vector int kondo_polynomial_vector(int offset, int index, Polynomial (*polys)[3], Fields_Table fields); // read a scalar product of symbols int kondo_resolve_scalar_prod_symbols(char* str, Polynomial* output); // get the offset and index of a monomial term int get_offset_index(char* str, int* offset, int* index); // get the offsets and index of a scalar product int get_offsets_index(char* str, int* offset1, int* offset2, int* index); // get the index of the virtual_field corresponding to a given string int get_virtual_field_index(char* str); #endif