CFLAGS += -DALBE
#CFLAGS += -DDEBUG
+CFLAGS += -DDSTART=400 -DDEND=600
#CFLAGS += -DVDEBUG
#CFLAGS += -DTERSOFF_ORIG
/* calculate initial forces */
potential_force_calc(moldyn);
#ifdef DEBUG
-return 0;
+//return 0;
#endif
/* some stupid checks before we actually start calculating bullshit */
}
#ifdef DEBUG
- printf("\nATOM 0: %f %f %f\n\n",itom->f.x,itom->f.y,itom->f.z);
+ //printf("\nATOM 0: %f %f %f\n\n",itom->f.x,itom->f.y,itom->f.z);
+ if(moldyn->time>DSTART&&moldyn->time<DEND) {
+ printf("force:\n");
+ printf(" x: %0.40f\n",moldyn->atom[5832].f.x);
+ printf(" y: %0.40f\n",moldyn->atom[5832].f.y);
+ printf(" z: %0.40f\n",moldyn->atom[5832].f.z);
+ }
#endif
/* calculate global virial */
moldyn->run3bp=0;
return 0;
}
+//if(ai==&(moldyn->atom[5832]))
+// printf(" %d: %d (%f)\n",ai->tag,aj->tag,moldyn->time);
/* d_ij */
d_ij=sqrt(d_ij2);
exchange->zeta_ij+=f_c_ik*g;
}
-#ifdef DEBUG
- if((ai==&(moldyn->atom[0]))|
- (aj==&(moldyn->atom[864]))|
- (ak==&(moldyn->atom[1003]))) {
- printf(" -> %f %f %f\n",exchange->ci2di2,frac,h_cos);
- }
-#endif
-
/* store even more data for second k loop */
exchange->g[kcount]=g;
exchange->dg[kcount]=dg;
v3_sub(&(aj->f),&(aj->f),&force); // dri rij = - drj rij
#ifdef DEBUG
- if((ai==&(moldyn->atom[0]))|(aj==&(moldyn->atom[0]))) {
+if(moldyn->time>DSTART&&moldyn->time<DEND) {
+ if((ai==&(moldyn->atom[5832]))|(aj==&(moldyn->atom[5832]))) {
printf("force 3bp (j2): [%d %d sum]\n",ai->tag,aj->tag);
printf("adding %f %f %f\n",force.x,force.y,force.z);
if(ai==&(moldyn->atom[0]))
f_c,b,f_a,f_r);
printf(" %f %f %f\n",exchange->zeta_ij,.0,.0);
}
+}
#endif
/* virial */
v3_add(&(ai->f),&(ai->f),&force);
#ifdef DEBUG
- if(ai==&(moldyn->atom[0])) {
+if(moldyn->time>DSTART&&moldyn->time<DEND) {
+ if(ai==&(moldyn->atom[5832])) {
printf("force 3bp (k2): [%d %d %d]\n",ai->tag,aj->tag,ak->tag);
printf("adding %f %f %f\n",force.x,force.y,force.z);
printf("total i: %f %f %f\n",ai->f.x,ai->f.y,ai->f.z);
}
+}
#endif
/* virial */
v3_add(&(aj->f),&(aj->f),&force);
#ifdef DEBUG
- if(aj==&(moldyn->atom[0])) {
+if(moldyn->time>DSTART&&moldyn->time<DEND) {
+ if(aj==&(moldyn->atom[5832])) {
printf("force 3bp (k2): [%d %d %d]\n",ai->tag,aj->tag,ak->tag);
printf("adding %f %f %f\n",force.x,force.y,force.z);
printf("total j: %f %f %f\n",aj->f.x,aj->f.y,aj->f.z);
}
+}
#endif
/* virial */
v3_add(&(ak->f),&(ak->f),&force);
#ifdef DEBUG
- if(ak==&(moldyn->atom[0])) {
+if(moldyn->time>DSTART&&moldyn->time<DEND) {
+ if(ak==&(moldyn->atom[5832])) {
printf("force 3bp (k2): [%d %d %d]\n",ai->tag,aj->tag,ak->tag);
printf("adding %f %f %f\n",force.x,force.y,force.z);
printf("total k: %f %f %f\n",ak->f.x,ak->f.y,ak->f.z);
}
+}
#endif
/* virial */
#./perms
if [ "$1" ] ; then
#./visualize -w 640 -h 480 -d $1
- ./visualize -w 640 -h 480 -d $1 -nll -2.4 -2.4 -2.4 -fur 3.8 3.8 3.8 -b -2.03 -2.03 -2.03 3.39 3.39 3.39 -r 0.6 -c 1.5 -15.0 1.5
+ ./visualize -w 640 -h 480 -d $1 -nll -2.4 -2.4 -2.4 -fur 3.8 3.8 3.8 -b -2.03 -2.03 -2.03 3.39 3.39 3.39 -r 0.6 -c 1.5 -15.0 1.5 -B 0.1
#rasmol -32 -nodisplay < $1/visualize.scr > /dev/null 2>&1
./ppm2avi $1
fi
#define LCNTX 9
#define LCNTY 9
#define LCNTZ 9
-#define PRERUN 10
-#define POSTRUN 4000
+#define PRERUN 40
+#define POSTRUN 3000
#define R_TITLE "Silicon self-interstitial"
#define LOG_E 10
for(j=0;j<NR_ATOMS;j++) {
run=1;
while(run) {
- r.x=1.0/8.0*ALBE_LC_SI;
+ // tetrahedral
+ /*
+ r.x=0.0;
+ r.y=0.0;
+ r.z=0.0;
+ */
+ // hexagonal
+ //
+ r.x=-1.0/8.0*ALBE_LC_SI;
r.y=-1.0/8.0*ALBE_LC_SI;
- r.z=-1.0/8.0*ALBE_LC_SI;
- //r.x=(rand_get_double(&(md->random))-0.5)*INJ_LENX;
+ r.z=1.0/8.0*ALBE_LC_SI;
+ //
+ // 110 dumbbell
+ /*
+ r.x=(-0.5+0.25+0.125)*ALBE_LC_SI;
+ r.y=(-0.5+0.25+0.125)*ALBE_LC_SI;
+ r.z=(-0.5+0.25)*ALBE_LC_SI;
+ md->atom[4372].r.x=(-0.5+0.125+0.125)*ALBE_LC_SI;
+ md->atom[4372].r.y=(-0.5+0.125+0.125)*ALBE_LC_SI;
+ */
+ // random
+ /*
+ r.x=(rand_get_double(&(md->random))-0.5)*INJ_LENX;
+ r.y=(rand_get_double(&(md->random))-0.5)*INJ_LENY;
+ r.z=(rand_get_double(&(md->random))-0.5)*INJ_LENZ;
+ */
+ // offset
r.x+=INJ_OFFSET;
- //r.y=(rand_get_double(&(md->random))-0.5)*INJ_LENY;
r.y+=INJ_OFFSET;
- //r.z=(rand_get_double(&(md->random))-0.5)*INJ_LENZ;
r.z+=INJ_OFFSET;
/* assume valid coordinates */
run=0;
d=v3_absolute_square(&dist);
/* reject coordinates */
if(d<R_C) {
+ //printf("atom %d - %f\n",i,d);
run=1;
break;
}
set_pbc(&md,TRUE,TRUE,TRUE);
/* create the lattice / place atoms */
+ //
#ifdef ALBE
create_lattice(&md,DIAMOND,ALBE_LC_SI,SI,M_SI,
//create_lattice(&md,DIAMOND,ALBE_LC_C,C,M_C,
// ATOM_ATTR_2BP|ATOM_ATTR_HB,
0,LCNTX,LCNTY,LCNTZ,NULL);
// 1,LCNTX,LCNTY,LCNTZ,NULL);
+ //
/* create zinkblende structure */
/*