projects
/
physik
/
posic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed (dank rolf)
[physik/posic.git]
/
moldyn.c
diff --git
a/moldyn.c
b/moldyn.c
index
6e76bc0
..
707fe03
100644
(file)
--- a/
moldyn.c
+++ b/
moldyn.c
@@
-456,8
+456,8
@@
int link_cell_init(t_moldyn *moldyn) {
printf("initializing linked cells (%d)\n",lc->cells);
for(i=0;i<lc->cells;i++)
printf("initializing linked cells (%d)\n",lc->cells);
for(i=0;i<lc->cells;i++)
-
//
list_init(&(lc->subcell[i]),1);
- list_init(&(lc->subcell[i]),lc->listfd);
+ list_init(&(lc->subcell[i]),1);
+
//
list_init(&(lc->subcell[i]),lc->listfd);
link_cell_update(moldyn);
link_cell_update(moldyn);
@@
-478,13
+478,13
@@
int link_cell_update(t_moldyn *moldyn) {
ny=lc->ny;
nz=lc->nz;
ny=lc->ny;
nz=lc->nz;
- for(i=0;i<
nx*ny*nz
;i++)
+ for(i=0;i<
lc->cells
;i++)
list_destroy(&(moldyn->lc.subcell[i]));
for(count=0;count<moldyn->count;count++) {
list_destroy(&(moldyn->lc.subcell[i]));
for(count=0;count<moldyn->count;count++) {
- i=
atom[count].r.x
/lc->x;
- j=
atom[count].r.y
/lc->y;
- k=
atom[count].r.z
/lc->z;
+ i=
(atom[count].r.x+(moldyn->dim.x/2))
/lc->x;
+ j=
(atom[count].r.y+(moldyn->dim.y/2))
/lc->y;
+ k=
(atom[count].r.z+(moldyn->dim.z/2))
/lc->z;
list_add_immediate_ptr(&(moldyn->lc.subcell[i+j*nx+k*nx*ny]),
&(atom[count]));
}
list_add_immediate_ptr(&(moldyn->lc.subcell[i+j*nx+k*nx*ny]),
&(atom[count]));
}
@@
-510,7
+510,9
@@
int link_cell_neighbour_index(t_moldyn *moldyn,int i,int j,int k,t_list *cell) {
count2=27;
a=nx*ny;
count2=27;
a=nx*ny;
+
cell[0]=lc->subcell[i+j*nx+k*a];
cell[0]=lc->subcell[i+j*nx+k*a];
+ printf("%d\n",i+j*nx+k*a);
for(ci=-1;ci<=1;ci++) {
bx=0;
x=i+ci;
for(ci=-1;ci<=1;ci++) {
bx=0;
x=i+ci;
@@
-532,12
+534,17
@@
int link_cell_neighbour_index(t_moldyn *moldyn,int i,int j,int k,t_list *cell) {
z=(z+nz)%nz;
bz=1;
}
z=(z+nz)%nz;
bz=1;
}
- if(!(x|y|z)) continue;
+ if(!(ci|cj|ck)) continue;
+ printf(" %d %d %d \n",x,y,z);
if(bx|by|bz) {
cell[--count2]=lc->subcell[x+y*nx+z*a];
if(bx|by|bz) {
cell[--count2]=lc->subcell[x+y*nx+z*a];
+ printf("%d\n",x+y*nx+z*a);
+ printf("--- %d\n",count2);
}
else {
cell[count1++]=lc->subcell[x+y*nx+z*a];
}
else {
cell[count1++]=lc->subcell[x+y*nx+z*a];
+ printf("%d\n",x+y*nx+z*a);
+ printf("--- %d\n",count1);
}
}
}
}
}
}
@@
-598,8
+605,6
@@
int moldyn_integrate(t_moldyn *moldyn) {
moldyn->potential_force_function(moldyn);
for(i=0;i<moldyn->time_steps;i++) {
moldyn->potential_force_function(moldyn);
for(i=0;i<moldyn->time_steps;i++) {
- /* show runs */
- printf(".");
/* neighbour list update */
link_cell_update(moldyn);
/* neighbour list update */
link_cell_update(moldyn);
@@
-642,9
+647,12
@@
int moldyn_integrate(t_moldyn *moldyn) {
}
if(v) {
}
if(v) {
- if(!(i%v))
+ if(!(i%v))
{
visual_atoms(moldyn->visual,i*moldyn->tau,
moldyn->atom,moldyn->count);
visual_atoms(moldyn->visual,i*moldyn->tau,
moldyn->atom,moldyn->count);
+ printf("\rsteps: %d",i);
+ fflush(stdout);
+ }
}
}
}
}
@@
-722,9
+730,10
@@
int harmonic_oscillator(t_moldyn *moldyn) {
u=0.0;
for(i=0;i<count;i++) {
/* determine cell + neighbours */
u=0.0;
for(i=0;i<count;i++) {
/* determine cell + neighbours */
- ni=atom[i].r.x/lc->x;
- nj=atom[i].r.y/lc->y;
- nk=atom[i].r.z/lc->z;
+ ni=(atom[i].r.x+(moldyn->dim.x/2))/lc->x;
+ nj=(atom[i].r.y+(moldyn->dim.y/2))/lc->y;
+ nk=(atom[i].r.z+(moldyn->dim.z/2))/lc->z;
+ printf("%d %d %d\n",ni,nj,nk);
c=link_cell_neighbour_index(moldyn,ni,nj,nk,neighbour);
/* processing cell of atom i */
c=link_cell_neighbour_index(moldyn,ni,nj,nk,neighbour);
/* processing cell of atom i */
@@
-818,10
+827,15
@@
int lennard_jones(t_moldyn *moldyn) {
u=0.0;
for(i=0;i<count;i++) {
/* determine cell + neighbours */
u=0.0;
for(i=0;i<count;i++) {
/* determine cell + neighbours */
- ni=atom[i].r.x/lc->x;
- nj=atom[i].r.y/lc->y;
- nk=atom[i].r.z/lc->z;
+ ni=(atom[i].r.x+(moldyn->dim.x/2))/lc->x;
+ nj=(atom[i].r.y+(moldyn->dim.y/2))/lc->y;
+ nk=(atom[i].r.z+(moldyn->dim.z/2))/lc->z;
+ printf("hier atom = %08x\n",&(atom[i]));
c=link_cell_neighbour_index(moldyn,ni,nj,nk,neighbour);
c=link_cell_neighbour_index(moldyn,ni,nj,nk,neighbour);
+ printf("da atom = %08x\n",&(atom[i]));
+ printf("da atom = %08x\n",&(moldyn->atom[i]));
+
+ printf("c = %d (%d %d %d)\n",c,ni,nj,nk);
/* processing cell of atom i */
this=&(neighbour[0]);
/* processing cell of atom i */
this=&(neighbour[0]);
@@
-830,7
+844,9
@@
int lennard_jones(t_moldyn *moldyn) {
btom=this->current->data;
if(btom==&(atom[i]))
continue;
btom=this->current->data;
if(btom==&(atom[i]))
continue;
+ puts("foo");
v3_sub(&distance,&(atom[i].r),&(btom->r));
v3_sub(&distance,&(atom[i].r),&(btom->r));
+ puts("foo");
d=1.0/v3_absolute_square(&distance); /* 1/r^2 */
h1=d*d; /* 1/r^4 */
h2*=d; /* 1/r^6 */
d=1.0/v3_absolute_square(&distance); /* 1/r^2 */
h1=d*d; /* 1/r^4 */
h2*=d; /* 1/r^6 */
@@
-844,6
+860,7
@@
int lennard_jones(t_moldyn *moldyn) {
d*=eps;
v3_scale(&force,&distance,d);
v3_add(&(atom[i].f),&(atom[i].f),&force);
d*=eps;
v3_scale(&force,&distance,d);
v3_add(&(atom[i].f),&(atom[i].f),&force);
+ printf("test!!\n");
} while(list_next(this)!=L_NO_NEXT_ELEMENT);
/* neighbours not doing boundary condition overflow */
} while(list_next(this)!=L_NO_NEXT_ELEMENT);
/* neighbours not doing boundary condition overflow */
@@
-853,6
+870,7
@@
int lennard_jones(t_moldyn *moldyn) {
if(this->start!=NULL) {
do {
if(this->start!=NULL) {
do {
+ printf("in bound: %d\n",j);
btom=this->current->data;
v3_sub(&distance,&(atom[i].r),&(btom->r));
d=v3_absolute_square(&distance); /* r^2 */
btom=this->current->data;
v3_sub(&distance,&(atom[i].r),&(btom->r));
d=v3_absolute_square(&distance); /* r^2 */
@@
-884,6
+902,7
@@
int lennard_jones(t_moldyn *moldyn) {
if(this->start!=NULL) {
do {
if(this->start!=NULL) {
do {
+ printf("out bound: %d\n",j);
btom=this->current->data;
v3_sub(&distance,&(atom[i].r),&(btom->r));
v3_per_bound(&distance,&(moldyn->dim));
btom=this->current->data;
v3_sub(&distance,&(atom[i].r),&(btom->r));
v3_per_bound(&distance,&(moldyn->dim));