X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=moldyn.c;h=08901c783452a006b638787351b735e20e2a56c3;hb=3961d57b84198e336085fd79263fec40837066a0;hp=57ae62f75c69ffce130d8cae8af6e5ead6588965;hpb=4e6604346459a4a8619bfc45f2a4b7dbd925ae86;p=physik%2Fposic.git diff --git a/moldyn.c b/moldyn.c index 57ae62f..08901c7 100644 --- a/moldyn.c +++ b/moldyn.c @@ -14,6 +14,7 @@ #include "math/math.h" #include "init/init.h" #include "random/random.h" +#include "visual/visual.h" int create_lattice(unsigned char type,int element,double mass,double lc, @@ -177,6 +178,76 @@ t_3dvec get_total_p(t_atom *atom, int count) { } +/* + * + * 'integration of newtons equation' - algorithms + * + */ + +/* start the integration */ + +int moldyn_integrate(t_moldyn *moldyn) { + + int i; + + /* calculate initial forces */ + moldyn->force(moldyn); + + for(i=0;itime_steps;i++) { + /* integration step */ + moldyn->integrate(moldyn); + + /* check for visualiziation */ + // to be continued ... + if(!(i%100)) + visual_atoms(moldyn->visual,i*moldyn->tau, + moldyn->atom,moldyn->count); + } + + return 0; +} + +/* velocity verlet */ + +int velocity_verlet(t_moldyn *moldyn) { + + int i,count; + double tau,tau_square; + t_3dvec delta; + t_atom *atom; + + atom=moldyn->atom; + count=moldyn->count; + tau=moldyn->tau; + + tau_square=tau*tau; + + for(i=0;idim)); + + /* velocities */ + v3_scale(&delta,&(atom[i].f),0.5*tau/atom[i].mass); + v3_add(&(atom[i].r),&(atom[i].r),&delta); + } + + /* forces depending on chosen potential */ + moldyn->force(moldyn); + + for(i=0;i