From: hackbard Date: Thu, 30 Mar 2006 23:56:11 +0000 (+0000) Subject: basic integration method and functions added X-Git-Url: https://hackdaworld.org/gitweb/?a=commitdiff_plain;h=3961d57b84198e336085fd79263fec40837066a0;p=physik%2Fposic.git basic integration method and functions added --- diff --git a/Makefile b/Makefile index 854b5e6..e171354 100644 --- a/Makefile +++ b/Makefile @@ -3,9 +3,9 @@ CFLAGS=-Wall OBJS=init/init.o visual/visual.o math/math.o random/random.o moldyn.o -all: moldyn.o posic +all: posic -posic: moldyn.o $(OBJS) +posic: $(OBJS) moldyn.o $(CC) $(CFLAGS) -lm -o $@ $(OBJS) $(LIBS) posic.c clean: 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