Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F91079184
SpeciesTimeIntegrator.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Nov 7, 16:05
Size
4 KB
Mime Type
text/x-c
Expires
Sat, Nov 9, 16:05 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
22176382
Attached To
rLAMMPS lammps
SpeciesTimeIntegrator.h
View Options
#ifndef SPECIES_TIME_INTEGRATOR_H
#define SPECIES_TIME_INTEGRATOR_H
#include <map>
#include <utility>
#include <string>
// ATC headers
#include "TimeIntegrator.h"
namespace
ATC
{
// forward declarations
class
ATC_CouplingMass
;
class
SpeciesIntegrationMethod
;
/**
* @class SpeciesTimeIntegrator
* @brief Class for various time integrators for species FE quantities in the Eulerian frame
* (handles parsing and stores basic data structures)
*/
class
SpeciesTimeIntegrator
:
public
TimeIntegrator
{
public:
// constructor
SpeciesTimeIntegrator
(
ATC_CouplingMass
*
atc
,
TimeIntegrationType
timeIntegrationType
);
// destructor
virtual
~
SpeciesTimeIntegrator
(){};
/** parser/modifier */
virtual
bool
modify
(
int
narg
,
char
**
arg
);
/** create objects to implement requested numerical method */
virtual
void
construct_methods
();
/** pack persistent fields */
virtual
void
pack_fields
(
RESTART_LIST
&
data
);
DENS_MAN
&
nodal_atomic_species_concentration_filtered
()
{
return
nodalAtomicSpeciesConcentrationFiltered_
;
}
protected:
/** sets of molecules tracked */
const
std
::
map
<
std
::
string
,
std
::
pair
<
MolSize
,
int
>
>
&
moleculeIds_
;
/** data */
DENS_MAN
nodalAtomicSpeciesConcentrationFiltered_
;
private:
// DO NOT define this
SpeciesTimeIntegrator
();
};
/**
* @class SpeciesIntegrationMethod
* @brief Class for species time integration methods which update FE quantities in time
*/
class
SpeciesIntegrationMethod
:
public
TimeIntegrationMethod
{
public:
// constructor
SpeciesIntegrationMethod
(
SpeciesTimeIntegrator
*
speciesTimeIntegrator
,
const
std
::
map
<
std
::
string
,
std
::
pair
<
MolSize
,
int
>
>
&
moleculeIds
);
// destructor
virtual
~
SpeciesIntegrationMethod
()
{
nodalAtomicMassDensity_
=
NULL
;};
/** create and get necessary transfer operators */
virtual
void
construct_transfers
();
protected:
/** time filtering object */
TimeFilter
*
timeFilter_
;
/** finite element mass density field */
DENS_MAN
&
massDensity_
;
/** atomic nodal mass density field */
// OBSOLETE?
DENS_MAN
&
nodalAtomicMassDensityOut_
;
DENS_MAN
*
nodalAtomicMassDensity_
;
/** finite element mass density field */
DENS_MAN
&
speciesConcentration_
;
DENS_MAN
*
nodalAtomicSpeciesConcentration_
;
DENS_MAN
&
nodalAtomicSpeciesConcentrationFiltered_
;
/** sets of molecules tracked */
const
std
::
map
<
std
::
string
,
std
::
pair
<
MolSize
,
int
>
>
&
moleculeIds_
;
private:
// DO NOT define this
SpeciesIntegrationMethod
();
};
/**
* @class SpeciesTimeIntegratorFractionalStep
* @brief FractionalStep integration for FE species quantities
* (Uses 2nd order FractionalStep integration to update
* the FE mass density field)
*/
class
SpeciesTimeIntegratorFractionalStep
:
public
SpeciesIntegrationMethod
{
public:
// constructor
SpeciesTimeIntegratorFractionalStep
(
SpeciesTimeIntegrator
*
speciesTimeIntegrator
,
const
std
::
map
<
std
::
string
,
std
::
pair
<
MolSize
,
int
>
>
&
moleculeIds
);
// destructor
virtual
~
SpeciesTimeIntegratorFractionalStep
(){};
/** pre time integration */
virtual
void
initialize
();
// time step methods, corresponding to ATC_Transfer
virtual
void
pre_initial_integrate1
(
double
dt
);
virtual
void
pre_final_integrate1
(
double
dt
);
virtual
void
post_final_integrate2
(
double
dt
);
/** post processing step before output */
virtual
void
post_process
();
private:
// DO NOT define this
SpeciesTimeIntegratorFractionalStep
();
};
/**
* @class SpeciesTimeIntegratorFractionalStepFiltered
* @brief FractionalStep integration for FE species quantities
* (Uses 2nd order FractionalStep integration to update
* the FE mass density field)
*/
class
SpeciesTimeIntegratorFractionalStepFiltered
:
public
SpeciesTimeIntegratorFractionalStep
{
public:
// constructor
SpeciesTimeIntegratorFractionalStepFiltered
(
SpeciesTimeIntegrator
*
speciesTimeIntegrator
,
const
std
::
map
<
std
::
string
,
std
::
pair
<
MolSize
,
int
>
>
&
moleculeIds
);
// destructor
virtual
~
SpeciesTimeIntegratorFractionalStepFiltered
(){};
/** pre time integration */
virtual
void
initialize
()
{};
// time step methods, corresponding to ATC_Transfer
/** first part of pre_final_integrate */
virtual
void
pre_final_integrate1
(
double
dt
);
/** post processing step before output */
virtual
void
post_process
(){};
private:
// DO NOT define this
SpeciesTimeIntegratorFractionalStepFiltered
();
};
};
#endif
Event Timeline
Log In to Comment