Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/kondo_preprocess.c')
-rw-r--r--src/kondo_preprocess.c126
1 files changed, 126 insertions, 0 deletions
diff --git a/src/kondo_preprocess.c b/src/kondo_preprocess.c
new file mode 100644
index 0000000..3371014
--- /dev/null
+++ b/src/kondo_preprocess.c
@@ -0,0 +1,126 @@
+/*
+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);
+}
+