*/
int create_lattice(t_moldyn *moldyn,u8 type,double lc,int element,double mass,
- u8 attr,u8 brand,int a,int b,int c) {
+ u8 attr,u8 brand,int a,int b,int c,t_3dvec *origin) {
int new,count;
int ret;
- t_3dvec origin;
+ t_3dvec orig;
void *ptr;
t_atom *atom;
atom=&(moldyn->atom[count]);
/* no atoms on the boundaries (only reason: it looks better!) */
- origin.x=0.5*lc;
- origin.y=0.5*lc;
- origin.z=0.5*lc;
+ if(!origin) {
+ orig.x=0.5*lc;
+ orig.y=0.5*lc;
+ orig.z=0.5*lc;
+ }
+ else {
+ orig.x=origin->x;
+ orig.y=origin->y;
+ orig.z=origin->z;
+ }
switch(type) {
case CUBIC:
set_nn_dist(moldyn,lc);
- ret=cubic_init(a,b,c,lc,atom,&origin);
+ ret=cubic_init(a,b,c,lc,atom,&orig);
break;
case FCC:
- v3_scale(&origin,&origin,0.5);
+ if(!origin)
+ v3_scale(&orig,&orig,0.5);
set_nn_dist(moldyn,0.5*sqrt(2.0)*lc);
- ret=fcc_init(a,b,c,lc,atom,&origin);
+ ret=fcc_init(a,b,c,lc,atom,&orig);
break;
case DIAMOND:
- v3_scale(&origin,&origin,0.25);
+ if(!origin)
+ v3_scale(&orig,&orig,0.25);
set_nn_dist(moldyn,0.25*sqrt(3.0)*lc);
- ret=diamond_init(a,b,c,lc,atom,&origin);
+ ret=diamond_init(a,b,c,lc,atom,&orig);
break;
default:
printf("unknown lattice type (%02x)\n",type);
/* calculate initial forces */
potential_force_calc(moldyn);
+#ifdef DEBUG
+return 0;
+#endif
/* some stupid checks before we actually start calculating bullshit */
if(moldyn->cutoff>0.5*moldyn->dim.x)
}
/*
- * periodic boundayr checking
+ * periodic boundary checking
*/
//inline int check_per_bound(t_moldyn *moldyn,t_3dvec *a) {