strncpy(moldyn->sfb,fb,63);
break;
case VISUAL_STEP:
- moldyn->mwrite=timer;
+ moldyn->vwrite=timer;
strncpy(moldyn->vfb,fb,63);
visual_init(&(moldyn->vis),fb);
break;
}
int add_atom(t_moldyn *moldyn,int element,double mass,u8 bnum,u8 attr,
- t_3dvec r,t_3dvec v) {
+ t_3dvec *r,t_3dvec *v) {
t_atom *atom;
void *ptr;
perror("[moldyn] realloc (add atom)");
return -1;
}
-
- atom=ptr;
- atom->r=r;
- atom->v=v;
+ moldyn->atom=ptr;
+
+ atom=moldyn->atom;
+ atom->r=*r;
+ atom->v=*v;
atom->element=element;
atom->bnum=bnum;
atom->attr=attr;
t_linkcell *lc;
int i;
+ int fd;
+
+ fd=open("/dev/null",O_WRONLY);
lc=&(moldyn->lc);
lc->cells=lc->nx*lc->ny*lc->nz;
lc->subcell=malloc(lc->cells*sizeof(t_list));
- printf("initializing linked cells (%d)\n",lc->cells);
+ printf("[moldyn] 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]),1);
+ list_init(&(lc->subcell[i]),fd);
link_cell_update(moldyn);
perror("[moldyn] realloc (runs)");
return -1;
}
+ moldyn->schedule.runs=ptr;
moldyn->schedule.runs[count-1]=runs;
ptr=realloc(schedule->tau,count*sizeof(double));
perror("[moldyn] realloc (tau)");
return -1;
}
+ moldyn->schedule.tau=ptr;
moldyn->schedule.tau[count-1]=tau;
return 0;
}
if(v) {
if(!(i%v)) {
- visual_atoms(moldyn->visual,i*moldyn->tau,
+ visual_atoms(&(moldyn->vis),moldyn->time,
moldyn->atom,moldyn->count);
- printf("\rsteps: %d",i);
+ printf("\rsched: %d, steps: %d",sched,i);
fflush(stdout);
}
}
+
}
/* check for hooks */
}
/* neighbour list update */
-printf("list update ...\n");
link_cell_update(moldyn);
-printf("done\n");
/* forces depending on chosen potential */
-printf("calc potential/force ...\n");
potential_force_calc(moldyn);
//moldyn->potential_force_function(moldyn);
-printf("done\n");
for(i=0;i<count;i++) {
/* again velocities */
int create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,double mass,
u8 attr,u8 bnum,int a,int b,int c);
int add_atom(t_moldyn *moldyn,int element,double mass,u8 bnum,u8 attr,
- t_3dvec r,t_3dvec v);
+ t_3dvec *r,t_3dvec *v);
int destroy_atoms(t_moldyn *moldyn);
int thermal_init(t_moldyn *moldyn);
t_3dvec r,v;
/* initialize moldyn */
+ printf("[sic] moldyn init\n");
moldyn_init(&md,argc,argv);
/* choose integration algorithm */
+ printf("[sic] setting integration algorithm\n");
set_int_alg(&md,MOLDYN_INTEGRATE_VERLET);
/* choose potential */
- //set_potential(&md,MOLDYN_1BP,tersoff_mult_1bp,&tp);
- //set_potential(&md,MOLDYN_2BP,tersoff_mult_2bp,&tp);
- //set_potential(&md,MOLDYN_3BP,tersoff_mult_3bp,&tp);
- set_potential(&md,MOLDYN_2BP,lennard_jones,&lj);
+ printf("[sic] selecting potential\n");
+ //set_potential1b(&md,tersoff_mult_1bp,&tp);
+ //set_potential2b(&md,tersoff_mult_2bp,&tp);
+ //set_potential3b(&md,tersoff_mult_3bp,&tp);
+ set_potential2b(&md,lennard_jones,&lj);
/*
* potential parameters
*/
/* lennard jones */
- lj.sigma6=LJ_SIGMA_SI*LJ_SIGMA_SI*LJ_SIGMA;
+ lj.sigma6=LJ_SIGMA_SI*LJ_SIGMA_SI*LJ_SIGMA_SI;
lj.sigma6*=lj.sigma6;
lj.sigma12=lj.sigma6*lj.sigma6;
lj.epsilon4=4.0*LJ_EPSILON_SI;
ho.spring_constant=1;
/* cutoff radius */
+ printf("[sic] setting cutoff radius\n");
set_cutoff(&md,LC_SI);
/* set (initial) dimensions of simulation volume */
+ printf("[sic] setting dimensions\n");
set_dim(&md,10*LC_SI,10*LC_SI,10*LC_SI,TRUE);
/* set periodic boundary conditions in all directions */
+ printf("[sic] setting periodic boundary conditions\n");
set_pbc(&md,TRUE,TRUE,TRUE);
/* create the lattice / place atoms */
+ printf("[sic] creating atoms\n");
memset(&v,0,sizeof(t_3dvec));
r.y=0;
r.z=0;
add_atom(&md,SI,M_SI,0,ATOM_ATTR_2BP,&r,&v);
/* set temperature */
+ printf("[sic] setting temperature\n");
set_temperature(&md,0.0);
/* initial thermal fluctuations of particles */
+ printf("[sic] thermal init\n");
thermal_init(&md);
/* create the simulation schedule */
- moldyn_add_schedule(&md,10000,1.0e-15);
+ printf("[sic] adding schedule\n");
+ moldyn_add_schedule(&md,1000,1.0e-15);
+
+ /* activate logging */
+ printf("[sic] activate logging\n");
+ moldyn_set_log(&md,LOG_TOTAL_ENERGY,"saves/test-energy",100);
+ moldyn_set_log(&md,VISUAL_STEP,"saves/test-visual",50);
/*
* let's do the actual md algorithm now
* integration of newtons equations
*/
+ printf("[sic] integration start, go get a coffee ...\n");
moldyn_integrate(&md);
/* close */
- link_cell_shutdown(&md);
-
+ printf("[sic] shutdown\n");
moldyn_shutdown(&md);
return 0;