X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=moldyn.c;h=bf7b9f0cde519d988f962b6576a6c58d947142c8;hb=f4f48069107d9e62db9f355f9c86aad8da17abcc;hp=dd8a527ff77f91bc1ce214ddb4370526222b357f;hpb=7c856cfd07e2e9d57ff0af3172b7f271fc5b22e0;p=physik%2Fposic.git diff --git a/moldyn.c b/moldyn.c index dd8a527..bf7b9f0 100644 --- a/moldyn.c +++ b/moldyn.c @@ -222,6 +222,7 @@ int set_potential(t_moldyn *moldyn,u8 type) { moldyn->func3b_k2=tersoff_mult_3bp_k2; moldyn->check_2b_bond=tersoff_mult_check_2b_bond; break; + /* case MOLDYN_POTENTIAL_AM: moldyn->func3b_j1=albe_mult_3bp_j1; moldyn->func3b_k1=albe_mult_3bp_k1; @@ -229,6 +230,17 @@ int set_potential(t_moldyn *moldyn,u8 type) { moldyn->func3b_k2=albe_mult_3bp_k2; moldyn->check_2b_bond=albe_mult_check_2b_bond; break; + */ + case MOLDYN_POTENTIAL_AM: + moldyn->func1b=albe_mult_i0; + moldyn->func2b=albe_mult_i0_j0; + moldyn->func3b_0=albe_mult_i0_j0_k0; + moldyn->func3b_1=albe_mult_i0_j1; + moldyn->func3b_j1=albe_mult_i0_j2; + moldyn->func3b_k2=albe_mult_i0_j2_k0; + moldyn->func3b_j2=albe_mult_i0_j3; + moldyn->check_2b_bond=albe_mult_check_2b_bond; + break; case MOLDYN_POTENTIAL_HO: moldyn->func2b=harmonic_oscillator; moldyn->check_2b_bond=harmonic_oscillator_check_2b_bond; @@ -1901,6 +1913,9 @@ int potential_force_calc(t_moldyn *moldyn) { if(jtom==&(itom[i])) continue; + /* reset 3bp run */ + moldyn->run3bp=1; + if((jtom->attr&ATOM_ATTR_2BP)& (itom[i].attr&ATOM_ATTR_2BP)) { moldyn->func2b(moldyn, @@ -1908,6 +1923,78 @@ int potential_force_calc(t_moldyn *moldyn) { jtom, bc_ij); } + +// REWRITE ONCE WORKING!!! + /* 3 body potential/force */ + + /* in j loop, 3bp run can be skipped */ + if(!(moldyn->run3bp)) + continue; + + if(!(itom[i].attr&ATOM_ATTR_3BP)) + continue; + + if(!(jtom->attr&ATOM_ATTR_3BP)) + continue; + + if(moldyn->func3b_0==NULL) + continue; + + for(k=0;k<27;k++) { + + bc_ik=(kstart==NULL) + continue; + + do { + ktom=that->current->data; +#endif + + if(!(ktom->attr&ATOM_ATTR_3BP)) + continue; + + if(ktom==jtom) + continue; + + if(ktom==&(itom[i])) + continue; + + moldyn->func3b_0(moldyn, + &(itom[i]), + jtom, + ktom, + bc_ik|bc_ij); +#ifdef STATIC_LISTS + } +#else + } while(list_next_f(that)!=\ + L_NO_NEXT_ELEMENT); +#endif + + } + + + if(moldyn->func3b_1) + moldyn->func3b_1(moldyn, + &(itom[i]), + jtom, + bc_ij); + +// UNTIL HERE + change function names! + + + } while(list_next_f(this)!=L_NO_NEXT_ELEMENT); #endif