ATC version 2.0, date: Aug21

git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10638 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
rjones
2013-08-21 23:06:07 +00:00
parent 0f69054d68
commit d77ab2f96a
161 changed files with 3811 additions and 2548 deletions

View File

@ -1,18 +1,103 @@
#ifndef TIME_INTEGRATOR_H
#define TIME_INTEGRATOR_H
// ATC headers
#include "MatrixLibrary.h"
#include "TimeFilter.h"
#include "ATC_TypeDefs.h"
using namespace std;
namespace ATC {
// forward declarations
class ATC_Method;
class ATC_Coupling;
class TimeIntegrationMethod;
/**
* @class AtomTimeIntegrator
* @brief Base class for various time integrators for atomic quantities (replacing other lammps fixes)
*/
class AtomTimeIntegrator {
public:
// constructor
AtomTimeIntegrator(){};
// destructor
virtual ~AtomTimeIntegrator(){};
/** create and get necessary transfer operators */
virtual void construct_transfers(){};
/** Predictor phase, Verlet first step for velocity */
virtual void init_integrate_velocity(double dt){};
/** Predictor phase, Verlet first step for position */
virtual void init_integrate_position(double dt){};
/** Corrector phase, Verlet second step for velocity */
virtual void final_integrate(double dt){};
};
/**
* @class AtomTimeIntegratorType
* @brief class for applying velocity-verlet based on atom type
*/
class AtomTimeIntegratorType : public AtomTimeIntegrator {
public:
// constructor
AtomTimeIntegratorType(ATC_Method * atc, AtomType atomType);
// destructor
virtual ~AtomTimeIntegratorType(){};
/** create and get necessary transfer operators */
virtual void construct_transfers();
/** Predictor phase, Verlet first step for velocity */
virtual void init_integrate_velocity(double dt);
/** Predictor phase, Verlet first step for position */
virtual void init_integrate_position(double dt);
/** Corrector phase, Verlet second step for velocity */
virtual void final_integrate(double dt);
protected:
/** pointer to atc object */
ATC_Method * atc_;
/** atom type this is applied to */
AtomType atomType_;
/** atomic masses */
DENS_MAN * mass_;
/** atomic positions */
DENS_MAN * position_;
/** atomic velocities */
DENS_MAN * velocity_;
/** atomic forces */
DENS_MAN * force_;
// workspace
DENS_MAT _deltaQuantity_;
private:
// DO NOT define this
AtomTimeIntegratorType();
};
/**
* @class TimeIntegrator
* @brief Base class for various time integrators for FE quantities