From 3961d57b84198e336085fd79263fec40837066a0 Mon Sep 17 00:00:00 2001 From: hackbard Date: Thu, 30 Mar 2006 23:56:11 +0000 Subject: [PATCH] basic integration method and functions added --- Makefile | 4 +-- moldyn.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ moldyn.h | 8 ++++++ posic.c | 16 ++++++++--- posic.h | 12 +-------- random/random.h | 2 +- 6 files changed, 95 insertions(+), 18 deletions(-) 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