X-Git-Url: https://hackdaworld.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=moldyn.c;h=3d669d223401ddd8fe9277e9ea07654186e7018e;hb=83775c491117faa149281d0302fc8b8064d6b080;hp=57ae62f75c69ffce130d8cae8af6e5ead6588965;hpb=4e6604346459a4a8619bfc45f2a4b7dbd925ae86;p=physik%2Fposic.git diff --git a/moldyn.c b/moldyn.c index 57ae62f..3d669d2 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,77 @@ 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%1)) { + 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