X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=moldyn.c;h=bf7b9f0cde519d988f962b6576a6c58d947142c8;hb=b5d3f1138875532ff0955610746d459a34ca9496;hp=4330396652b99ca6ee4f935935d1ecfcabd48541;hpb=a58211f24f237b51e708b9e8b9fd463a709754a6;p=physik%2Fposic.git diff --git a/moldyn.c b/moldyn.c index 4330396..bf7b9f0 100644 --- a/moldyn.c +++ b/moldyn.c @@ -113,7 +113,7 @@ int set_p_scale(t_moldyn *moldyn,u8 ptype,double ptc) { moldyn->pt_scale|=ptype; moldyn->p_tc=ptc; - printf("[moldyn] p/t scaling:\n"); + printf("[moldyn] p scaling:\n"); printf(" p: %s",ptype?"yes":"no "); if(ptype) @@ -129,7 +129,7 @@ int set_t_scale(t_moldyn *moldyn,u8 ttype,double ttc) { moldyn->pt_scale|=ttype; moldyn->t_tc=ttc; - printf("[moldyn] p/t scaling:\n"); + printf("[moldyn] t scaling:\n"); printf(" t: %s",ttype?"yes":"no "); if(ttype) @@ -220,8 +220,9 @@ int set_potential(t_moldyn *moldyn,u8 type) { moldyn->func3b_k1=tersoff_mult_3bp_k1; moldyn->func3b_j2=tersoff_mult_3bp_j2; moldyn->func3b_k2=tersoff_mult_3bp_k2; - // missing: check 2b bond func + 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; @@ -1579,8 +1591,9 @@ int moldyn_integrate(t_moldyn *moldyn) { printf("[moldyn] WARNING: forces too high / tau too small!\n"); /* zero absolute time */ - moldyn->time=0.0; - moldyn->total_steps=0; + // should have right values! + //moldyn->time=0.0; + //moldyn->total_steps=0; /* debugging, ignore */ moldyn->debug=0; @@ -1900,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, @@ -1907,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 @@ -2586,8 +2674,6 @@ int bond_analyze_process(t_moldyn *moldyn,t_atom *itom,t_atom *jtom, if(moldyn->check_2b_bond(moldyn,itom,jtom,bc)==FALSE) return 0; - d=sqrt(d); - /* now count this bonding ... */ ba=data;