mirror of
https://github.com/arcan1s/moldyn.git
synced 2025-06-28 06:41:42 +00:00
Remove old files
This commit is contained in:
431
AGL for v.3.c
431
AGL for v.3.c
@ -1,431 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <conio.h>
|
||||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
|
||||
|
||||
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<atoms; i++)
|
||||
for (j=0; j<num_atom_agl; j++)
|
||||
if (mol[i] == atom_agl[j])
|
||||
{
|
||||
c[j][num_atom[j]][0] = a[i][0];
|
||||
c[j][num_atom[j]][1] = a[i][1];
|
||||
c[j][num_atom[j]][2] = a[i][2];
|
||||
type[j][num_atom[j]][0] = type_at[i][0];
|
||||
type[j][num_atom[j]][1] = type_at[i][1];
|
||||
type[j][num_atom[j]][2] = type_at[i][2];
|
||||
type[j][num_atom[j]][3] = type_at[i][3];
|
||||
num_atom[j]++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void trans()
|
||||
{
|
||||
int i, j, k, imin;
|
||||
double x[3], tr[27][30][3], min, leng;
|
||||
|
||||
|
||||
for (i=1; i<num_atom_agl; i++)
|
||||
{
|
||||
for (j=0; j<3; j++)
|
||||
x[j] = 0;
|
||||
|
||||
for (j=0; j<i; j++)
|
||||
for (k=0; k<3; k++)
|
||||
x[k] += c[j][0][k];
|
||||
|
||||
for (j=0; j<3; j++)
|
||||
x[j] = x[j] / i;
|
||||
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[0][k][0] = c[i][k][0];
|
||||
tr[0][k][1] = c[i][k][1];
|
||||
tr[0][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[1][k][0] = c[i][k][0] + cell[0];
|
||||
tr[1][k][1] = c[i][k][1];
|
||||
tr[1][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[2][k][0] = c[i][k][0];
|
||||
tr[2][k][1] = c[i][k][1] + cell[1];
|
||||
tr[2][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[3][k][0] = c[i][k][0];
|
||||
tr[3][k][1] = c[i][k][1];
|
||||
tr[3][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[4][k][0] = c[i][k][0] - cell[0];
|
||||
tr[4][k][1] = c[i][k][1];
|
||||
tr[4][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[5][k][0] = c[i][k][0];
|
||||
tr[5][k][1] = c[i][k][1] - cell[1];
|
||||
tr[5][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[6][k][0] = c[i][k][0];
|
||||
tr[6][k][1] = c[i][k][1];
|
||||
tr[6][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[7][k][0] = c[i][k][0] + cell[0];
|
||||
tr[7][k][1] = c[i][k][1] + cell[1];
|
||||
tr[7][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[8][k][0] = c[i][k][0] + cell[0];
|
||||
tr[8][k][1] = c[i][k][1];
|
||||
tr[8][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[9][k][0] = c[i][k][0];
|
||||
tr[9][k][1] = c[i][k][1] + cell[1];
|
||||
tr[9][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[10][k][0] = c[i][k][0] - cell[0];
|
||||
tr[10][k][1] = c[i][k][1] - cell[1];
|
||||
tr[10][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[11][k][0] = c[i][k][0] - cell[0];
|
||||
tr[11][k][1] = c[i][k][1];
|
||||
tr[11][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[12][k][0] = c[i][k][0];
|
||||
tr[12][k][1] = c[i][k][1] - cell[1];
|
||||
tr[12][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[13][k][0] = c[i][k][0] + cell[0];
|
||||
tr[13][k][1] = c[i][k][1] - cell[1];
|
||||
tr[13][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[14][k][0] = c[i][k][0] + cell[0];
|
||||
tr[14][k][1] = c[i][k][1];
|
||||
tr[14][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[15][k][0] = c[i][k][0] - cell[0];
|
||||
tr[15][k][1] = c[i][k][1] + cell[1];
|
||||
tr[15][k][2] = c[i][k][2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[16][k][0] = c[i][k][0];
|
||||
tr[16][k][1] = c[i][k][1] + cell[1];
|
||||
tr[16][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[17][k][0] = c[i][k][0] - cell[0];
|
||||
tr[17][k][1] = c[i][k][1];
|
||||
tr[17][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[18][k][0] = c[i][k][0];
|
||||
tr[18][k][1] = c[i][k][1] - cell[1];
|
||||
tr[18][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[19][k][0] = c[i][k][0] + cell[0];
|
||||
tr[19][k][1] = c[i][k][1] + cell[1];
|
||||
tr[19][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[20][k][0] = c[i][k][0] - cell[0];
|
||||
tr[20][k][1] = c[i][k][1] + cell[1];
|
||||
tr[20][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[21][k][0] = c[i][k][0] + cell[0];
|
||||
tr[21][k][1] = c[i][k][1] - cell[1];
|
||||
tr[21][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[22][k][0] = c[i][k][0] + cell[0];
|
||||
tr[22][k][1] = c[i][k][1] + cell[1];
|
||||
tr[22][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[23][k][0] = c[i][k][0] - cell[0];
|
||||
tr[23][k][1] = c[i][k][1] - cell[1];
|
||||
tr[23][k][2] = c[i][k][2] + cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[24][k][0] = c[i][k][0] - cell[0];
|
||||
tr[24][k][1] = c[i][k][1] + cell[1];
|
||||
tr[24][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[25][k][0] = c[i][k][0] + cell[0];
|
||||
tr[25][k][1] = c[i][k][1] - cell[1];
|
||||
tr[25][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
tr[26][k][0] = c[i][k][0] - cell[0];
|
||||
tr[26][k][1] = c[i][k][1] - cell[1];
|
||||
tr[26][k][2] = c[i][k][2] - cell[2];
|
||||
}
|
||||
|
||||
|
||||
imin = 0;
|
||||
min = sqrt ((tr[0][0][0] - x[0])*(tr[0][0][0] - x[0]) + (tr[0][0][1] - x[1])*(tr[0][0][1] - x[1]) + (tr[0][0][2] - x[2])*(tr[0][0][2] - x[2]));
|
||||
for (j=1; j<27; j++)
|
||||
{
|
||||
leng = sqrt ((tr[j][0][0] - x[0])*(tr[j][0][0] - x[0]) + (tr[j][0][1] - x[1])*(tr[j][0][1] - x[1]) + (tr[j][0][2] - x[2])*(tr[j][0][2] - x[2]));
|
||||
|
||||
if (leng < min)
|
||||
{
|
||||
min = leng;
|
||||
imin = j;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
for (j=0; j<3; j++)
|
||||
{
|
||||
c[i][k][j] = tr[imin][k][j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void coord_data(FILE *fs)
|
||||
{
|
||||
int i, j, atom_num, atom_type;
|
||||
double x, y, z;
|
||||
char q[256];
|
||||
|
||||
|
||||
fscanf (fs, "%i", &atoms);
|
||||
for (i=0; i<atoms; i++)
|
||||
{
|
||||
fscanf (fs, "%i", &atom_num);
|
||||
for (j=0; j<4; j++)
|
||||
fscanf (fs, "%c", &type_at[i][j]);
|
||||
fscanf (fs, "%lf", &x);
|
||||
fscanf (fs, "%lf", &y);
|
||||
fscanf (fs, "%lf", &z);
|
||||
fscanf (fs, "%i", &atom_type);
|
||||
fscanf (fs, "%i", &mol[i]);
|
||||
|
||||
fgets (q, 256, fs);
|
||||
|
||||
a[i][0] = x;
|
||||
a[i][1] = y;
|
||||
a[i][2] = z;
|
||||
}
|
||||
|
||||
search();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void aglom(FILE *fin)
|
||||
{
|
||||
int i;
|
||||
char q[256];
|
||||
|
||||
|
||||
fscanf (fin, "%i", &num_atom_agl);
|
||||
fgets (q, 256, fin);
|
||||
for (i=0; i<num_atom_agl; i++)
|
||||
{
|
||||
fscanf (fin, "%i", &atom_agl[i]);
|
||||
fgets (q, 256, fin);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void output (FILE *fout)
|
||||
{
|
||||
int i, k, inp;
|
||||
|
||||
|
||||
inp = 1;
|
||||
for (i=0; i<num_atom_agl; i++)
|
||||
for (k=0; k<num_atom[i]; k++)
|
||||
{
|
||||
fprintf (fout, "ATOM %5i %c%c MOL %5i %8.3f%8.3f%8.3f\n", inp, type[i][k][2], type[i][k][3], i+1, c[i][k][0], c[i][k][1], c[i][k][2]);
|
||||
|
||||
inp++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void main(void)
|
||||
{
|
||||
char name[128], coord_name[128], out_name[128], q[128];
|
||||
int i, k, agl;
|
||||
FILE *f;
|
||||
FILE *inp;
|
||||
FILE *coord;
|
||||
FILE *out;
|
||||
|
||||
|
||||
f=fopen ("input_agl.dat", "r");
|
||||
for (i=0; i<24; i++)
|
||||
fscanf (f, "%c", &q[i]);
|
||||
fscanf (f, "%s", &name);
|
||||
for (i=0; i<19; i++)
|
||||
fscanf (f, "%c", &q[i]);
|
||||
fscanf (f, "%i", &agl);
|
||||
for (i=0; i<10; i++)
|
||||
fscanf (f, "%c", &q[i]);
|
||||
for (i=0; i<3; i++)
|
||||
fscanf (f, "%lf", &cell[i]);
|
||||
fgets (q, 128, f);
|
||||
for (i=0; i<25; i++)
|
||||
fscanf (f, "%c", &q[i]);
|
||||
fscanf (f, "%s", &out_name);
|
||||
fclose (f);
|
||||
|
||||
k = strlen (out_name);
|
||||
out_name[k] = out_name[k-4];
|
||||
out_name[k+1] = out_name[k-3];
|
||||
out_name[k+2] = out_name[k-2];
|
||||
out_name[k+3] = out_name[k-1];
|
||||
out_name[k+4] = '\0';
|
||||
inp=fopen (name, "r");
|
||||
for (i=0; i<agl; i++)
|
||||
{
|
||||
fscanf (inp, "%s", &coord_name);
|
||||
aglom (inp);
|
||||
|
||||
|
||||
coord=fopen (coord_name, "r");
|
||||
coord_data (coord);
|
||||
fclose (coord);
|
||||
|
||||
|
||||
trans();
|
||||
|
||||
|
||||
out_name[k-4] = '_';
|
||||
out_name[k-3] = conv (i+1, 3);
|
||||
out_name[k-2] = conv (i+1, 2);
|
||||
out_name[k-1] = conv (i+1, 1);
|
||||
out=fopen (out_name, "w+");
|
||||
output (out);
|
||||
fclose (out);
|
||||
}
|
||||
fclose (inp);
|
||||
}
|
1165
STAT_GEN.c
1165
STAT_GEN.c
File diff suppressed because it is too large
Load Diff
180
graph.c
180
graph.c
@ -1,180 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
|
||||
|
||||
|
||||
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 ("grath.txt", "r");
|
||||
fscanf (f, "%i", &n);
|
||||
for (i=0; i<n; i++)
|
||||
for (j=0; j<n; j++)
|
||||
fscanf (f, "%lf", &a[i][j]);
|
||||
fgets (q, 256, f);
|
||||
fgets (q, 256, f);
|
||||
for (i=0; i<n; i++)
|
||||
for (j=0; j<n; j++)
|
||||
fscanf (f, "%lf", &b[i][j]);
|
||||
fclose (f);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void equat(double c[100][100], int rang, int z)
|
||||
{
|
||||
int i, j, k, imax;
|
||||
double max, res;
|
||||
|
||||
|
||||
for (i=0; i<n; i++)
|
||||
if (i == rang)
|
||||
c[i][n] = 1;
|
||||
else
|
||||
c[i][n] = 0;
|
||||
|
||||
|
||||
for(i=0; i<n; i++)
|
||||
{
|
||||
imax = 0;
|
||||
max = 0;
|
||||
|
||||
for(j=i; j<n; j++)
|
||||
{
|
||||
if (fabs(c[j][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<n; j++)
|
||||
{
|
||||
if (j != i)
|
||||
{
|
||||
res = c[j][i] / c[i][i];
|
||||
for(k=i; k<=n; k++)
|
||||
c[j][k] = c[j][k] - (res * c[i][k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (i=0; i<n; i++)
|
||||
switch (z)
|
||||
{
|
||||
case 0:
|
||||
sol_a[i] = c[i][n] / c[i][i];
|
||||
break;
|
||||
|
||||
case 1:
|
||||
sol_b[i][rang] = c[i][n] / c[i][i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void iso()
|
||||
{
|
||||
double work_a[100][100], work_b[100][100], bb[100][100];
|
||||
int i, j, k, l;
|
||||
double sum_a, sum_b;
|
||||
|
||||
|
||||
for (i=0; i<n; i++)
|
||||
for (j=0; j<n; j++)
|
||||
{
|
||||
work_a[i][j] = a[i][j];
|
||||
work_b[i][j] = b[i][j];
|
||||
}
|
||||
|
||||
|
||||
for (j=0; j<n; j++)
|
||||
{
|
||||
work_a[j][j]++;
|
||||
equat(work_a, j, 0);
|
||||
|
||||
|
||||
for (k=0; k<n; k++)
|
||||
{
|
||||
for (i=0; i<n; i++)
|
||||
for (l=0; l<n; l++)
|
||||
bb[i][l] = work_b[i][l];
|
||||
|
||||
bb[k][k]++;
|
||||
equat(bb, k, 1);
|
||||
}
|
||||
|
||||
|
||||
for (k=0; k<n; k++)
|
||||
{
|
||||
sum_a = 0;
|
||||
sum_b = 0;
|
||||
for (i=0; i<n; i++)
|
||||
{
|
||||
sum_a += sol_a[i] * sol_a[i];
|
||||
sum_b += sol_b[i][k] * sol_b[i][k];
|
||||
}
|
||||
|
||||
if ((sum_a == sum_b) && (sol_a[j] == sol_b[k][k]))
|
||||
{
|
||||
for (i=0; i<j; i++)
|
||||
if (p[i] == (k+1))
|
||||
l = 1;
|
||||
|
||||
if (l != 1)
|
||||
{
|
||||
p[j] = k + 1;
|
||||
work_b[k][k]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
int i, j;
|
||||
|
||||
|
||||
open();
|
||||
for (i=0; i<n; i++)
|
||||
p[i] = 0;
|
||||
iso();
|
||||
|
||||
|
||||
for (i=0; i<n; i++)
|
||||
printf ("%i\t", p[i]);
|
||||
|
||||
for (i=0; i<n; i++)
|
||||
if (p[i] == 0)
|
||||
j = 1;
|
||||
|
||||
if (j != 1)
|
||||
printf ("\nGraths are isomorthic.\n");
|
||||
else
|
||||
printf ("\nGraths aren't isomorthic.\n");
|
||||
|
||||
getch();
|
||||
}
|
Reference in New Issue
Block a user