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. * Multiple bug fixes
132 lines
2.9 KiB
C
132 lines
2.9 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.
|
|
*/
|
|
|
|
/*
|
|
kondo_preprocess
|
|
|
|
Generate configuration files for the Kondo problem
|
|
|
|
*/
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "definitions.cpp"
|
|
#include "kondo.h"
|
|
#include "cli_parser.h"
|
|
#include "array.h"
|
|
|
|
|
|
// read cli arguments
|
|
int read_args_kondo_pp(int argc,const char* argv[], Str_Array* str_args, Kondopp_Options* opts);
|
|
// print usage message
|
|
int print_usage_kondo_pp();
|
|
|
|
int main (int argc, const char* argv[]){
|
|
int i;
|
|
// string arguments
|
|
Str_Array str_args;
|
|
// options
|
|
Kondopp_Options opts;
|
|
|
|
// read command-line arguments
|
|
read_args_kondo_pp(argc,argv,&str_args,&opts);
|
|
|
|
kondo_generate_conf(&str_args, 2*opts.dimension);
|
|
for(i=0;i<str_args.length;i++){
|
|
printf("%s\n",str_args.strs[i].str);
|
|
if(i<str_args.length-1){
|
|
printf("&\n");
|
|
}
|
|
}
|
|
|
|
//free memory
|
|
free_Str_Array(str_args);
|
|
return(0);
|
|
}
|
|
|
|
|
|
// read cli arguments
|
|
#define CP_FLAG_DIMENSION 1
|
|
int read_args_kondo_pp(int argc,const char* argv[], Str_Array* str_args, Kondopp_Options* opts){
|
|
int i;
|
|
// pointers
|
|
char* ptr;
|
|
// file to read the polynomial from in flow mode
|
|
const char* file="";
|
|
// flag that indicates what argument is being read
|
|
int flag=0;
|
|
// whether a file was specified on the command-line
|
|
int exists_file=0;
|
|
|
|
|
|
// if there are no arguments
|
|
if(argc==1){
|
|
print_usage_kondo_pp();
|
|
exit(-1);
|
|
}
|
|
|
|
// defaults
|
|
// dimensions (including time)
|
|
(*opts).dimension=2;
|
|
|
|
// loop over arguments
|
|
for(i=1;i<argc;i++){
|
|
// flag
|
|
if(argv[i][0]=='-'){
|
|
for(ptr=((char*)argv[i])+1;*ptr!='\0';ptr++){
|
|
switch(*ptr){
|
|
case 'd':
|
|
flag=CP_FLAG_DIMENSION;
|
|
break;
|
|
// print version
|
|
case 'v':
|
|
printf("kondo_preprocess " VERSION "\n");
|
|
exit(1);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
// number of dimensions
|
|
else if (flag==CP_FLAG_DIMENSION){
|
|
sscanf(argv[i],"%d",&((*opts).dimension));
|
|
// check value of the dimension
|
|
if((*opts).dimension<=0 || (*opts).dimension>=4){
|
|
fprintf(stderr,"error: kondo_preprocess only supports dimensions 1, 2 and 3 (got %d)\n",(*opts).dimension);
|
|
exit(-1);
|
|
}
|
|
flag=0;
|
|
}
|
|
// read file name from command-line
|
|
else{
|
|
file=argv[i];
|
|
exists_file=1;
|
|
}
|
|
}
|
|
|
|
read_config_file(str_args, file, 1-exists_file);
|
|
|
|
return(0);
|
|
}
|
|
|
|
// print usage message
|
|
int print_usage_kondo_pp(){
|
|
printf("\nusage:\n kondo_preprocess [-d dimension] <filename>\n\n");
|
|
return(0);
|
|
}
|
|
|