ATC version 2.0, date: Aug7
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10557 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -1,209 +0,0 @@
|
||||
/** ElasticTimeIntegrator : a class to implement various elasticity integrators for FE quantities */
|
||||
|
||||
#ifndef ELASTIC_TIME_INTEGRATOR_H
|
||||
#define ELASTIC_TIME_INTEGRATOR_H
|
||||
|
||||
// ATC_Transfer headers
|
||||
#include "TimeIntegrator.h"
|
||||
|
||||
using namespace std;
|
||||
namespace ATC {
|
||||
|
||||
// forward declarations
|
||||
class ElasticIntegrationMethod;
|
||||
|
||||
/**
|
||||
* @class ElasticTimeIntegrator
|
||||
* @brief Base class fo various time integrators for elasticity FE quantities
|
||||
*/
|
||||
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
// Class ElasticTimeIntegrator
|
||||
// Base class for elastic integrators which handles
|
||||
// parsing and stores basic data structures
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
|
||||
class ElasticTimeIntegrator : public TimeIntegrator {
|
||||
|
||||
public:
|
||||
|
||||
// constructor
|
||||
ElasticTimeIntegrator(ATC_Transfer * atcTransfer,
|
||||
TimeIntegrationType timeIntegrationType);
|
||||
|
||||
// destructor
|
||||
virtual ~ElasticTimeIntegrator(){};
|
||||
|
||||
/** parser/modifier */
|
||||
virtual bool modify(int narg, char **arg);
|
||||
|
||||
/** pre time integration */
|
||||
virtual void initialize();
|
||||
|
||||
private:
|
||||
|
||||
// DO NOT define this
|
||||
ElasticTimeIntegrator();
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @class ElasticIntegrationMethod
|
||||
* @brief Base class fo various time integration methods for elasticity FE quantities
|
||||
*/
|
||||
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
// Class ElasticIntegrationMethod
|
||||
// Base class for elastic integration methods which
|
||||
// update the FE quantities in time
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
|
||||
class ElasticIntegrationMethod : public TimeIntegrationMethod {
|
||||
|
||||
public:
|
||||
|
||||
// constructor
|
||||
ElasticIntegrationMethod(ElasticTimeIntegrator * elasticTimeIntegrator);
|
||||
|
||||
// destructor
|
||||
virtual ~ElasticIntegrationMethod(){};
|
||||
|
||||
protected:
|
||||
|
||||
/** time filtering application object */
|
||||
TimeFilter * timeFilter_;
|
||||
|
||||
/** finite element displacement field */
|
||||
DENS_MAT & displacement_;
|
||||
/** finite element velocity field */
|
||||
DENS_MAT & velocity_;
|
||||
/** finite element acceleration field */
|
||||
DENS_MAT & acceleration_;
|
||||
|
||||
/** atomic nodal displacement field */
|
||||
DENS_MAT & nodalAtomicDisplacement_;
|
||||
/** atomic nodal velocity field */
|
||||
DENS_MAT & nodalAtomicVelocity_;
|
||||
|
||||
/** right-hand side of velocity equation */
|
||||
DENS_MAT & velocityRhs_;
|
||||
|
||||
/** force at nodes from atomic quantities */
|
||||
DENS_MAT & nodalAtomicForce_;
|
||||
|
||||
/** filtered power for computation during equilibration */
|
||||
DENS_MAT & forceFilteringData_;
|
||||
|
||||
private:
|
||||
|
||||
// DO NOT define this
|
||||
ElasticIntegrationMethod();
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @class ElasticTimeIntegratorVerlet
|
||||
* @brief Verlet integration for FE elastic quantities
|
||||
*/
|
||||
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
// Class ElasticTimeIntegratorVerlet
|
||||
// Uses the second order Verlet integration to update
|
||||
// the finite element velocity and displacement
|
||||
// fields, i.e. the same integration used for the
|
||||
// atomic velocities and positions.
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
|
||||
class ElasticTimeIntegratorVerlet : public ElasticIntegrationMethod {
|
||||
|
||||
public:
|
||||
|
||||
// constructor
|
||||
ElasticTimeIntegratorVerlet(ElasticTimeIntegrator * elasticTimeIntegrator);
|
||||
|
||||
// destructor
|
||||
virtual ~ElasticTimeIntegratorVerlet(){};
|
||||
|
||||
// time step methods, corresponding to ATC_Transfer
|
||||
|
||||
/** first part of mid_initial_integrate */
|
||||
virtual void mid_initial_integrate1(double dt);
|
||||
|
||||
/** first part of post_initial_integrate */
|
||||
virtual void post_initial_integrate1(double dt);
|
||||
|
||||
/** first part of pre_final_integrate */
|
||||
virtual void pre_final_integrate1(double dt);
|
||||
|
||||
/** first part of post_final_integrate */
|
||||
virtual void post_final_integrate1(double dt);
|
||||
|
||||
/** post processing step before output */
|
||||
virtual void post_process(double dt);
|
||||
|
||||
private:
|
||||
|
||||
// DO NOT define this
|
||||
ElasticTimeIntegratorVerlet();
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @class ElasticTimeIntegratorVerlet
|
||||
* @brief Verlet integration for FE elastic quantities with time filtering
|
||||
*/
|
||||
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
// Class ElasticTimeIntegratorVerletFiltered
|
||||
//--------------------------------------------------------
|
||||
//--------------------------------------------------------
|
||||
|
||||
class ElasticTimeIntegratorVerletFiltered : public ElasticTimeIntegratorVerlet {
|
||||
|
||||
public:
|
||||
|
||||
// constructor
|
||||
ElasticTimeIntegratorVerletFiltered(ElasticTimeIntegrator * elasticTimeIntegrator);
|
||||
|
||||
// destructor
|
||||
virtual ~ElasticTimeIntegratorVerletFiltered(){};
|
||||
|
||||
// time step methods, corresponding to ATC_Transfer
|
||||
|
||||
/** first part of mid_initial_integrate */
|
||||
virtual void mid_initial_integrate1(double dt);
|
||||
|
||||
/** first part of post_initial_integrate */
|
||||
virtual void post_initial_integrate1(double dt);
|
||||
|
||||
/** first part of pre_final_integrate */
|
||||
virtual void pre_final_integrate1(double dt);
|
||||
|
||||
/** first part of post_final_integrate */
|
||||
virtual void post_final_integrate1(double dt);
|
||||
|
||||
/** post processing step before output */
|
||||
virtual void post_process(double dt){};
|
||||
|
||||
protected:
|
||||
|
||||
/** atomic nodal acceleration field */
|
||||
DENS_MAT & nodalAtomicAcceleration_;
|
||||
|
||||
private:
|
||||
|
||||
// DO NOT define this
|
||||
ElasticTimeIntegratorVerletFiltered();
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user