127 lines
2.7 KiB
C
127 lines
2.7 KiB
C
/*
|
|
Copyright 2015 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));
|
|
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);
|
|
}
|
|
|