Merge branch 'leadoff'
[physik/posic.git] / mdrun.c
diff --git a/mdrun.c b/mdrun.c
index bb1cd21..26fbc87 100644 (file)
--- a/mdrun.c
+++ b/mdrun.c
@@ -11,6 +11,7 @@
 #include "potentials/harmonic_oscillator.h"
 #include "potentials/lennard_jones.h"
 #include "potentials/albe.h"
+#include "potentials/albe_orig.h"
 #ifdef TERSOFF_ORIG
 #include "potentials/tersoff_orig.h"
 #else
@@ -234,6 +235,8 @@ int mdrun_parse_config(t_mdrun *mdrun) {
                if(!strncmp(word[0],"potential",9)) {
                        if(!strncmp(word[1],"albe",4))
                                mdrun->potential=MOLDYN_POTENTIAL_AM;
+                       if(!strncmp(word[1],"albe_o",6))
+                               mdrun->potential=MOLDYN_POTENTIAL_AO;
                        if(!strncmp(word[1],"tersoff",7))
                                mdrun->potential=MOLDYN_POTENTIAL_TM;
                        if(!strncmp(word[1],"ho",2))
@@ -803,18 +806,35 @@ int del_atoms(t_moldyn *moldyn,t_mdrun *mdrun) {
        t_del_atoms_params *delp;
        int i;
        t_3dvec dist;
-       
+       u8 outer;
+
+       outer=0;        
        stage=mdrun->stage.current->data;
        delp=stage->params;
 
+       if(delp->r<0)
+               outer=1;
+
        for(i=0;i<moldyn->count;i++) {
                v3_sub(&dist,&(delp->o),&(moldyn->atom[i].r));
 //printf("%d ----> %f %f %f = %f | %f\n",i,dist.x,dist.y,dist.z,v3_absolute_square(&dist),delp->r*delp->r);
                if(v3_absolute_square(&dist)<=(delp->r*delp->r)) {
-                       del_atom(moldyn,moldyn->atom[i].tag);
-                       printf("%s atom deleted: %d %d %d\n",ME,
-                               moldyn->atom[i].tag,moldyn->atom[i].element,
-                              moldyn->atom[i].brand);
+                       if(!outer) {
+                               del_atom(moldyn,moldyn->atom[i].tag);
+                               printf("%s atom deleted: %d %d %d\n",ME,
+                                      moldyn->atom[i].tag,
+                                      moldyn->atom[i].element,
+                                      moldyn->atom[i].brand);
+                       }
+               }
+               else {
+                       if(outer) {
+                               del_atom(moldyn,moldyn->atom[i].tag);
+                               printf("%s atom deleted: %d %d %d\n",ME,
+                                      moldyn->atom[i].tag,
+                                      moldyn->atom[i].element,
+                                      moldyn->atom[i].brand);
+                       }
                }
        }
 
@@ -1308,6 +1328,8 @@ int crt(t_moldyn *moldyn,t_mdrun *mdrun) {
                      moldyn->count*sizeof(t_atom));
        }
        close(fd);
+       /* visualize atoms */
+       visual_atoms(moldyn);
 
        /* output energy */
        printf("  crt energy: %d - %f\n\n",
@@ -1634,6 +1656,11 @@ int main(int argc,char **argv) {
                                             mdrun.element1,
                                             mdrun.element2);
                        break;
+               case MOLDYN_POTENTIAL_AO:
+                       albe_orig_mult_set_params(&moldyn,
+                                                 mdrun.element1,
+                                                 mdrun.element2);
+                       break;
                case MOLDYN_POTENTIAL_TM:
                        tersoff_mult_set_params(&moldyn,
                                                mdrun.element1,