From e9c725a6b993c2242bbb4974d4a906d60fe99ad1 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Thu, 22 Nov 2012 17:48:37 +0400 Subject: [PATCH] added input files --- agl/AGL for v.3.c | 431 ++++++++++++++++ agl/input_agl.dat | 4 + agl/meth.txt | 11 + graph/graph.c | 180 +++++++ graph/graph_exm1.txt | 8 + graph/graph_exm2.txt | 12 + stat/STAT_GEN.c | 1165 ++++++++++++++++++++++++++++++++++++++++++ stat/input_stat.dat | 9 + 8 files changed, 1820 insertions(+) create mode 100755 agl/AGL for v.3.c create mode 100755 agl/input_agl.dat create mode 100755 agl/meth.txt create mode 100755 graph/graph.c create mode 100755 graph/graph_exm1.txt create mode 100755 graph/graph_exm2.txt create mode 100755 stat/STAT_GEN.c create mode 100755 stat/input_stat.dat diff --git a/agl/AGL for v.3.c b/agl/AGL for v.3.c new file mode 100755 index 0000000..1c57964 --- /dev/null +++ b/agl/AGL for v.3.c @@ -0,0 +1,431 @@ +#include +#include +#include +#include +#include + + +double cell[3], a[10000][3], c[250][30][3]; +int num_atom_agl, atom_agl[250], mol[10000], atoms, num_atom[250]; +char type_at[10000][4], type[250][30][4]; + + + +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 search() +{ + int i, j; + + + for (i=0; i<250; i++) + num_atom[i] = 0; + + for (i=0; i +#include +#include +#include + + + +int n, p[100]; +double sol_a[100], sol_b[100][100], a[100][100], b[100][100]; + + + +void open() +{ + FILE *f; + int i, j; + char q[256]; + + + f = fopen ("graph.txt", "r"); + fscanf (f, "%i", &n); + for (i=0; i max) + { + max = fabs(c[j][i]); + imax = j; + } + } + + for(j=0; j<=n; j++) + { + res = c[i][j]; + c[i][j] = c[imax][j]; + c[imax][j] = res; + } + + for(j=0; j +#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