From 7af8a487c13b3df6a2d4b42838a984b2712dc4dd Mon Sep 17 00:00:00 2001 From: arcan1s Date: Mon, 22 Jul 2013 19:20:19 +0400 Subject: [PATCH] Prerelease statgen 1.0.1 --- stat/STAT_GEN.c | 1165 ---------------------------- stat/input_stat.dat | 9 - statgen/include/statgen/add_main.h | 1 + statgen/src/CMakeLists.txt | 26 +- statgen/src/add_main.c | 17 +- statgen/src/graph.c | 5 +- statgen/src/main.c | 143 +--- statgen/src/messages.c | 18 +- statgen/src/stat_print.c | 16 +- statgen/statgen.cmake | 9 +- 10 files changed, 92 insertions(+), 1317 deletions(-) delete mode 100755 stat/STAT_GEN.c delete mode 100755 stat/input_stat.dat diff --git a/stat/STAT_GEN.c b/stat/STAT_GEN.c deleted file mode 100755 index 5c78ae9..0000000 --- a/stat/STAT_GEN.c +++ /dev/null @@ -1,1165 +0,0 @@ -#include -#include -#include -#include -#include -#include - - - -int type_int, mol_atom_arr[2], num_agl_atom, step, mol[1000], label[8000], agl_all[350], all_bond_stat[500]; -int num_mol, num_mol_ext, label_mol[8000][6][2], bond_array[1000][1000], cycle, linear; -double cell_param[3], bond_param[2], a[480000][3][2]; -char name[128]; - - - -char conv(int fnumb, int dig_pos) -{ - int s, d, e; - char digit[10]; - - - digit[0] = '0'; - digit[1] = '1'; - digit[2] = '2'; - digit[3] = '3'; - digit[4] = '4'; - digit[5] = '5'; - digit[6] = '6'; - digit[7] = '7'; - digit[8] = '8'; - digit[9] = '9'; - - if (fnumb >= 100) - s = (fnumb - fmod(fnumb, 100)) / 100; - else - s = 0; - if (fnumb - s*100 >= 10) - d = (fnumb - s*100 - fmod(fnumb - s*100, 10))/10; - else - d = 0; - e = fnumb - s*100 - d*10; - - if (dig_pos == 1) return digit[e]; - if (dig_pos == 2) return digit[d]; - if (dig_pos == 3) return digit[s]; - else return digit[0]; -} - - - -void input_data(FILE *fs) -{ - char q[64]; - int i, j, k, l, m, n, inp[2], o; - int atoms, number, atom_t, molecule, numb[2]; - double x, y, z; - - - l = 0; - numb[0] = 0; - numb[1] = 0; - for (i=0; i<8000; i++) - for (j=0; j<6; j++) - for (k=0; k 0) - { - for (k=0; k 0) && (a[label_mol[i][0][0]][k][0] > 0)) - { - for (l=0; l 0)) - { - for (l=0; l 0) && (a[label_mol[i][0][0]][1][0] > 0) && (a[label_mol[i][0][0]][2][0] > 0)) - { - for (j=0; j 0) && (a[label_mol[i][0][0]][1][0] > 0) && (a[label_mol[i][0][0]][2][0] < 0)) - { - for (j=0; j 0) && (a[label_mol[i][0][0]][1][0] < 0) && (a[label_mol[i][0][0]][2][0] > 0)) - { - for (j=0; j 0) && (a[label_mol[i][0][0]][2][0] > 0)) - { - for (j=0; j 0)) - { - for (j=0; j 0) && (a[label_mol[i][0][0]][2][0] < 0)) - { - for (j=0; j 0) && (a[label_mol[i][0][0]][1][0] < 0) && (a[label_mol[i][0][0]][2][0] < 0)) - { - for (j=0; j 0) - { - bond_array[label[i]][label[j]] = (100*min - fmod(100*min, 1)); - bond_array[label[j]][label[i]] = (100*min - fmod(100*min, 1)); - } - } - } - } - break; - - case 2: - for (i=0; i 0) - { - bond_array[label[i]][label[j]] = (100*min00 - fmod(100*min00, 1)); - bond_array[label[j]][label[i]] = (100*min00 - fmod(100*min00, 1)); - } - } - } - else - { - min = sqrt ((a[label_mol[i][0][1]][0][1]-a[label_mol[j][0][0]][0][0])*(a[label_mol[i][0][1]][0][1]-a[label_mol[j][0][0]][0][0]) + (a[label_mol[i][0][1]][1][1]-a[label_mol[j][0][0]][1][0])*(a[label_mol[i][0][1]][1][1]-a[label_mol[j][0][0]][1][0]) + (a[label_mol[i][0][1]][2][1]-a[label_mol[j][0][0]][2][0])*(a[label_mol[i][0][1]][2][1]-a[label_mol[j][0][0]][2][0])); - h = 0; - while (label_mol[i][h][1] != 10000) - { - k = 0; - while (label_mol[j][k][0] != 10000) - { - leng = sqrt ((a[label_mol[i][h][1]][0][1]-a[label_mol[j][k][0]][0][0])*(a[label_mol[i][h][1]][0][1]-a[label_mol[j][k][0]][0][0]) + (a[label_mol[i][h][1]][1][1]-a[label_mol[j][k][0]][1][0])*(a[label_mol[i][h][1]][1][1]-a[label_mol[j][k][0]][1][0]) + (a[label_mol[i][h][1]][2][1]-a[label_mol[j][k][0]][2][0])*(a[label_mol[i][h][1]][2][1]-a[label_mol[j][k][0]][2][0])); - if (leng < min) - min = leng; - k++; - } - h++; - } - - if (min < bond_param[1]) - { - k = 1; - for (l=0; l 0) - { - bond_array[label[i]][label[j]] = (100*min00 - fmod(100*min00, 1)); - bond_array[label[j]][label[i]] = (100*min00 - fmod(100*min00, 1)); - } - } - } - } - } - } - break; - } - - - p = num_mol; - - for (i=0; i 0) - { - x = 0; - k = 0; - while ((bin[x] == 0) && (x 0) - { - l = bond_array[label_bond[i][j]][bond[label_bond[i][j]][k]]; - all_bond_stat[l-1]++; - q[0] = conv (l, 1); - q[1] = conv (l, 2); - q[2] = conv (l, 3); - fprintf (fo, "( %c.%c%c)", q[2], q[1], q[0]); - } - } - fprintf (fo, "\n"); - } - - - i++; - } - - fprintf (fo, "____________________________________________________________\n"); -} - - - -void all_stat(FILE *fo, int chs) -{ - int i; - double k, l, t[2]; - char q[3]; - - - fprintf (fo, "\nSUMMARY STATISTIC:\n"); - - - for (i=0; i<250; i++) - if (agl_all[i] != 0) - { - t[0] = agl_all[i]; - t[1] = step; - k = t[0] / t[1]; - t[1] = t[1] * num_mol; - l = t[0] / t[1] * (i+1); - fprintf (fo, "%3i - %7i %7.2f %8.5f\n", i+1, agl_all[i], k, l); - } - - - if (chs > 0) - { - fprintf (fo, "____________________\n"); - - k = 0; - for (i=0; i<500; i++) - k += all_bond_stat[i]; - - for (i=0; i<500; i++) - if (all_bond_stat[i] != 0) - { - q[2] = conv(i+1, 3); - q[1] = conv(i+1, 2); - q[0] = conv(i+1, 1); - t[0] = i + 1; - t[1] = t[0] / (bond_param[0] * 100); - t[0] = all_bond_stat[i]; - t[0] = t[0] / k; - fprintf (fo, "%c.%c%c (%7.4f) - %4i %7.5f\n", q[2], q[1], q[0], t[1], all_bond_stat[i], t[0]); - } - - - if (chs == 2) - { - i = linear + cycle; - t[0] = i; - t[1] = linear; - t[1] = t[1] / t[0]; - fprintf (fo, "____________________\n"); - fprintf (fo, "Linear molecules - %5i (%8.5f)\n", linear, t[1]); - t[1] = cycle; - t[1] = t[1] / t[0]; - fprintf (fo, "Cycle molecules - %5i (%8.5f)\n", cycle, t[1]); - } - } -} - - - -void agl_stat (FILE *fo) -{ - int i, j, h, k, l, molecule; - int num_bond[1000], bond[1000][20], bin[1000], label_bond[350], label_num; - double leng, min, min00; - char q[3]; - - - for (i=0; i(num_mol-1))) - k = 0; - - if (k == 1) - { - bond[label[i]][num_bond[label[i]]] = label[j]; - num_bond[label[i]]++; - bond[label[j]][num_bond[label[j]]] = label[i]; - num_bond[label[j]]++; - - bond_array[label[i]][label[j]] = (100*min - fmod(100*min, 1)); - bond_array[label[j]][label[i]] = (100*min - fmod(100*min, 1)); - } - } - } - break; - - case 2: - for (i=0; i(num_mol-1))) - k = 0; - - if (k == 1) - { - bond[label[i]][num_bond[label[i]]] = label[j]; - num_bond[label[i]]++; - bond[label[j]][num_bond[label[j]]] = label[i]; - num_bond[label[j]]++; - - bond_array[label[i]][label[j]] = (100*min00 - fmod(100*min00, 1)); - bond_array[label[j]][label[i]] = (100*min00 - fmod(100*min00, 1)); - } - } - else - { - min = sqrt ((a[label_mol[i][0][1]][0][1]-a[label_mol[j][0][0]][0][0])*(a[label_mol[i][0][1]][0][1]-a[label_mol[j][0][0]][0][0]) + (a[label_mol[i][0][1]][1][1]-a[label_mol[j][0][0]][1][0])*(a[label_mol[i][0][1]][1][1]-a[label_mol[j][0][0]][1][0]) + (a[label_mol[i][0][1]][2][1]-a[label_mol[j][0][0]][2][0])*(a[label_mol[i][0][1]][2][1]-a[label_mol[j][0][0]][2][0])); - h = 0; - while (label_mol[label[i]][h][1] != 10000) - { - k = 0; - while (label_mol[label[j]][k][0] != 10000) - { - leng = sqrt ((a[label_mol[i][h][1]][0][1]-a[label_mol[j][k][0]][0][0])*(a[label_mol[i][h][1]][0][1]-a[label_mol[j][k][0]][0][0]) + (a[label_mol[i][h][1]][1][1]-a[label_mol[j][k][0]][1][0])*(a[label_mol[i][h][1]][1][1]-a[label_mol[j][k][0]][1][0]) + (a[label_mol[i][h][1]][2][1]-a[label_mol[j][k][0]][2][0])*(a[label_mol[i][h][1]][2][1]-a[label_mol[j][k][0]][2][0])); - if (leng < min) - min = leng; - k++; - } - h++; - } - - if (min < bond_param[1]) - { - k = 1; - for (l=0; l(num_mol-1))) - k = 0; - - if (k == 1) - { - bond[label[i]][num_bond[label[i]]] = label[j]; - num_bond[label[i]]++; - bond[label[j]][num_bond[label[j]]] = label[i]; - num_bond[label[j]]++; - - bond_array[label[i]][label[j]] = (100*min00 - fmod(100*min00, 1)); - bond_array[label[j]][label[i]] = (100*min00 - fmod(100*min00, 1)); - } - } - } - } - } - break; - } - - - for (i=0; i 1) - fprintf (fo, "-"); - for (j=0; j to) - { - i = from; - from = to; - to = i; - } - for (i=0; i<15; i++) - fscanf (f_in, "%c", &q); - for (i=0; i<3;i++) - fscanf(f_in, "%lf", &cell_param[i]); - fgets (q, 256, f_in); - for (i=0; i<9; i++) - fscanf (f_in, "%c", &q); - fscanf (f_in, "%i", &choise); - fgets (q, 256, f_in); - for (i=0; i<12; i++) - fscanf (f_in, "%c", &q); - fscanf (f_in, "%i", &type_int); - fgets (q, 256, f_in); - for (i=0; i<11; i++) - fscanf (f_in, "%c", &q); - for (i=0; i +#include + +// #include "messages.h" int error_checking (const float *cell, const int from, const char *input, @@ -36,7 +39,7 @@ int printing_head (const char *output, const int log, const int quiet, FILE *f_out; f_out = fopen (output, "w"); - fprintf (f_out, "statgen ::: V.1.0.0 ::: 2013-07-17\n\n"); + fprintf (f_out, "statgen ::: V.1.0.1 ::: 2013-07-23\n\n"); fprintf (f_out, "CONFIGURATION\n"); fprintf (f_out, "LOG=%i\nQUIET=%i\n", log, quiet); @@ -64,6 +67,18 @@ int printing_head (const char *output, const int log, const int quiet, } +int print_message (const int quiet, FILE *std_output, const int log, FILE *f_log, + const int mode, const char *str) +{ + if (quiet != 1) + message (0, mode, str, std_output); + if (log == 1) + message (1, mode, str, f_log); + + return 0; +} + + int set_defaults (float *cell, int *from, char *input, int *log, int *max_depth, int *num_of_inter, char *output, int *to, int *type_inter, int *quiet) { diff --git a/statgen/src/graph.c b/statgen/src/graph.c index a5bce71..1dcd9d5 100644 --- a/statgen/src/graph.c +++ b/statgen/src/graph.c @@ -105,6 +105,9 @@ int graph_analyze (const int N, const int *matrix, const int max_depth, int *iso // convert to matrix of weight pn = (int *) malloc (N * sizeof (int)); n_cycle = (int *) malloc ((depth - 2) * sizeof (int)); + if ((pn == NULL) || + (n_cycle == NULL)) + return 1; for (i=0; i #include -int message (const int log, const int mode, const char *text, FILE *stdout) +int message (const int log, const int mode, const char *text, FILE *output) /* mode - number of message * text - additional text */ @@ -18,17 +18,17 @@ int message (const int log, const int mode, const char *text, FILE *stdout) if (log == 1) { char time_str[256]; - time_t t = time(NULL); - struct tm* aTm = localtime(&t); - sprintf(time_str, "[%04d-%02d-%02d %02d:%02d:%02d] [%2i]: ", aTm->tm_year+1900, + time_t t = time (NULL); + struct tm* aTm = localtime (&t); + sprintf (time_str, "[%04d-%02d-%02d %02d:%02d:%02d] [%2i]: ", aTm->tm_year+1900, aTm->tm_mon+1, aTm->tm_mday, aTm->tm_hour, aTm->tm_min, aTm->tm_sec, mode); - fputs (time_str, stdout); + fputs (time_str, output); } switch (mode) { case 0: - sprintf (out, "Starting program: '%s' (Ver.1.0.0)\n", text); + sprintf (out, "Starting program: '%s'\n", text); break; case 1: sprintf (out, "Checking errors\n"); @@ -79,6 +79,6 @@ int message (const int log, const int mode, const char *text, FILE *stdout) break; } - fputs (out, stdout); + fputs (out, output); return 0; } \ No newline at end of file diff --git a/statgen/src/stat_print.c b/statgen/src/stat_print.c index 81fea6f..c8ea24c 100644 --- a/statgen/src/stat_print.c +++ b/statgen/src/stat_print.c @@ -27,7 +27,7 @@ int printing_agl (const char *input, const char *output, const int *connect, * type_agl - massive of numbers of aglomerate types */ { - int i, *iso, j, k, *label_matrix, *matrix; + int error, i, *iso, j, k, *label_matrix, *matrix; FILE *f_out; /* iso - isomorphic graph in database * label_matrix - massive of indexes of molecule @@ -36,6 +36,8 @@ int printing_agl (const char *input, const char *output, const int *connect, */ iso = (int *) malloc (max_depth * sizeof (int)); + if (iso == NULL) + return 1; f_out = fopen (output, "a"); // head @@ -50,14 +52,14 @@ int printing_agl (const char *input, const char *output, const int *connect, if (num_mol_agl[i] > 0) { // creating connectivity graph - matrix = (int *) malloc (num_mol_agl[i] * num_mol_agl[i] * sizeof (int)); - for (j=0; j 0) - graph_analyze (num_mol_agl[i], matrix, max_depth, iso); + error = graph_analyze (num_mol_agl[i], matrix, max_depth, iso); + if (error > 0) + return 1; // printing class of aglomerate fprintf (f_out, "AGL=%i=", num_mol_agl[i]); diff --git a/statgen/statgen.cmake b/statgen/statgen.cmake index 02ec877..594b0d0 100644 --- a/statgen/statgen.cmake +++ b/statgen/statgen.cmake @@ -1,13 +1,12 @@ # set directories -set ("${PROJECT}_BINARY_DIR" bin) -set ("${PROJECT}_SOURCE_DIR" src:include) -set ("${PROJECT}_LIB_DIR" lib) +set (${PROJECT}_BINARY_DIR bin) +set (${PROJECT}_SOURCE_DIR src:include) +set (${PROJECT}_LIB_DIR lib) set (CMAKE_INCLUDE_PATH ${${PROJECT}_SOURCE_DIR}) set (CMAKE_LIBRARY_PATH ${${PROJECT}_LIB_DIR}) set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/${${PROJECT}_BINARY_DIR}) set (CMAKE_VERBOSE_MAKEFILE ON) -set (CMAKE_BUILD_TYPE Debug) if ( WITH_DEBUG_MODE ) ADD_DEFINITIONS ( -DDEBUG_MODE=1 ) @@ -18,5 +17,5 @@ if ( CMAKE_COMPILER_IS_GNUCXX ) set (CMAKE_CXX_FLAGS "-O0 ${ADD_CXX_FLAGS}") set (CMAKE_CXX_FLAGS_DEBUG "-g -O0") else () - message ("not yet") + message ("Not enabled") endif () \ No newline at end of file