more interstitial testing, added bond visualization
[physik/posic.git] / sic.c
diff --git a/sic.c b/sic.c
index 7855cc2..20c80d1 100644 (file)
--- a/sic.c
+++ b/sic.c
@@ -8,7 +8,6 @@
 #include <math.h>
  
 #include "moldyn.h"
-#include "posic.h"
 
 /* potential */
 #include "potentials/harmonic_oscillator.h"
 #define INJ_OFFSET     (ALBE_LC_SI/8.0)
 #define RELAX_S                20
 
-#define LCNTX          5
-#define LCNTY          5
-#define LCNTZ          5
+#define LCNTX          9
+#define LCNTY          9
+#define LCNTZ          9
 #define PRERUN         10
-#define POSTRUN                2000
+#define POSTRUN                4000
 
 #define R_TITLE                "Silicon self-interstitial"
 #define LOG_E          10
@@ -57,7 +56,21 @@ typedef struct s_hp {
        char **argv;    /* args */
 } t_hp;
 
-int hook(void *moldyn,void *hook_params) {
+int hook_del_atom(void *moldyn,void *hook_params) {
+
+       t_moldyn *md;
+       t_hp *hp;
+
+       md=moldyn;
+       hp=hook_params;
+
+       set_pt_scale(md,0,0,T_SCALE_BERENDSEN,100.0);
+       del_atom(md,2);
+
+       return 0;
+}
+
+int hook_add_atom(void *moldyn,void *hook_params) {
 
        t_moldyn *md;
        t_3dvec r,v,dist;
@@ -97,11 +110,14 @@ int hook(void *moldyn,void *hook_params) {
        for(j=0;j<NR_ATOMS;j++) {
                run=1;
                while(run) {
-                       r.x=(rand_get_double(&(md->random))-0.5)*INJ_LENX;
+                       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.x+=INJ_OFFSET;
-                       r.y=(rand_get_double(&(md->random))-0.5)*INJ_LENY;
+                       //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=(rand_get_double(&(md->random))-0.5)*INJ_LENZ;
                        r.z+=INJ_OFFSET;
                        /* assume valid coordinates */
                        run=0;
@@ -122,7 +138,7 @@ int hook(void *moldyn,void *hook_params) {
 #else
                add_atom(md,SI,M_SI,0,
 #endif
-                        ATOM_ATTR_1BP|ATOM_ATTR_2BP|ATOM_ATTR_3BP|ATOM_ATTR_HB,
+                        ATOM_ATTR_1BP|ATOM_ATTR_2BP|ATOM_ATTR_3BP|ATOM_ATTR_HB|ATOM_ATTR_VB,
                         &r,&v);
        }
        hp->a_count+=NR_ATOMS;
@@ -182,12 +198,14 @@ int main(int argc,char **argv) {
        set_potential_params(&md,&tp);
 #endif
 
-       /* cutoff radius */
+       /* cutoff radius & bondlen */
 #ifdef ALBE
        set_cutoff(&md,ALBE_S_SI);
+       set_bondlen(&md,ALBE_S_SI,ALBE_S_C,ALBE_S_SIC);
        //set_cutoff(&md,ALBE_S_C);
 #else
        set_cutoff(&md,TM_S_SI);
+       set_bondlen(&md,TM_S_SI,TM_S_C,-1.0);
        //set_cutoff(&md,TM_S_C);
 #endif
 
@@ -375,7 +393,9 @@ int main(int argc,char **argv) {
        memset(&hookparam,0,sizeof(t_hp));
        hookparam.argc=argc;
        hookparam.argv=argv;
-       moldyn_set_schedule_hook(&md,&hook,&hookparam);
+       moldyn_set_schedule_hook(&md,&hook_add_atom,&hookparam);
+       //moldyn_set_schedule_hook(&md,&hook_del_atom,&hookparam);
+       //moldyn_add_schedule(&md,POSTRUN,1.0);
 
        /* activate logging */
        moldyn_set_log_dir(&md,argv[1]);