1
#ifndef ATC_COUPLING_MASS_H
2
#define ATC_COUPLING_MASS_H
4
/** owned field/s: MASS_DENSITY */
7
#include "ATC_Coupling.h"
15
// Forward declarations
17
class SpeciesTimeIntegrator;
18
class ChargeRegulator;
19
class ConcentrationRegulator;
22
* @class ATC_CouplingMass
23
* @brief A class for atom-continuum transfers & control for species transport
26
//--------------------------------------------------------
27
//--------------------------------------------------------
28
// Class ATC_CouplingMass
29
//--------------------------------------------------------
30
//--------------------------------------------------------
32
class ATC_CouplingMass : public ATC_Coupling {
37
ATC_CouplingMass(std::string groupName,
38
double **& perAtomArray,
39
LAMMPS_NS::Fix * thisFix,
40
std::string matParamFile,
41
ExtrinsicModelType extrinsic = NO_MODEL);
44
virtual ~ATC_CouplingMass();
46
/** parser/modifier */
47
virtual bool modify(int narg, char **arg);
49
/** pre time integration */
50
virtual void initialize();
52
/** prior to exchange */
53
virtual void pre_exchange();
54
virtual void reset_atoms() { resetNlocal_=true;}
56
/** compute vector for output */
57
virtual double compute_vector(int n);
59
/** output routines */
60
virtual void output();
65
//---------------------------------------------------------------
66
/** initialization routines */
67
//---------------------------------------------------------------
68
/** constructs all data which is updated with time integration, i.e. fields */
69
//virtual void construct_time_integration_data();
70
/** set up data which is dependency managed */
71
virtual void construct_transfers();
73
/** sets the position/velocity of the ghost atoms */
74
virtual void set_ghost_atoms(){};
76
/** physics specific filter initialization */
83
// i.e. we only need the correct shape function matrix for restriction