PROGRAM lightweight !Programme leger de dynamique moleculaire. Juste por tester !divers champs de force. !Il est totalement non optimise, excessivement redondant et donc tres simple. !(au moins avant d'etre ecrit) !local variables !eneropt: option sur le calcul de l'energie !npart: nombre de particules !volume: volume du systeme !nvec:nombre de vecteurs de base !ndim: dimensionlite de l'espace !posopt: type de reseau des positions initiales !velopt: mode d'initialisation des vitesses !cell(nvec,ndim): vecteurs de base de la boite de simulation !pos(npart,ndim): position des particules !vel(npart,ndim): vitesse des particules !masse: masse des particules !ipas: indice du pas !npas: nombre de pas !dt: pas de temps !reall:unite reele de longueur USE types_def IMPLICIT NONE TYPE(options_type) :: options INTEGER :: npart,nvec,ndim,ipas,npas,nimage DOUBLE PRECISION :: ameam(2),volume,energy,masse,dt,dx,reall,rcut DOUBLE PRECISION, ALLOCATABLE :: cell(:,:),pos(:,:),vel(:,:),forces(:,:) !Lecture des donees Call readinput(ameam,npart,volume,masse,nvec,ndim,npas,dt,dx,reall,options,rcut) ALLOCATE(cell(nvec,ndim),pos(npart,ndim),vel(npart,ndim),forces(npart,ndim)) !Creation de la maille de simulation CALL inicell(cell,nvec,ndim) !Positions initiales CALL inipos(pos,npart,ndim,cell,nvec,options,rcut,reall,nimage) !Vitesses initiales CALL inivel(vel,npart,ndim,masse,reall,options) !Forces initiales Call forc(forces,npart,ndim,pos,cell,nvec,reall,dx,options,rcut,nimage) !Energie initiale Call ener(ameam,energy,pos,npart,vel,masse,ndim,cell,nvec,reall,options,rcut,nimage) !On teste les forces CALL testforce(ameam,pos,npart,ndim,dx,cell,nvec,reall,options,rcut,nimage) !En avant (suivant Verlet des vitesses) write(80,*) npart,ndim,masse,dt,nvec,reall,dx,options,rcut,nimage write(80,*)pos,vel,cell !!$ stop !!$ read(80)npart,ndim,masse,dt,nvec,reall,dx,options,rcut,nimage !!$ allocate(pos(npart,ndim),vel(npart,ndim),cell(ndim,ndim)) !!$ read(80)pos,vel,cell ! npas=15 DO ipas=0,npas CALL move_li(pos,npart,ndim,vel,masse,dt,cell,nvec,reall,options,dx,rcut,nimage) write(75,*) dt*ipas, pos(1,1) CALL ener(ameam,energy,pos,npart,vel,masse,ndim,cell,nvec,reall,options,rcut,nimage) ! CALL output(pos,npart,ndim,vel,forces,energy,ipas) ENDDO CALL testforce(ameam,pos,npart,ndim,dx,cell,nvec,reall,options,rcut,nimage) !On ferme CALL CLOSE() STOP END PROGRAM lightweight !C'est fini