ls1-MarDyn
ls1-MarDyn molecular dynamics code
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
ControlRegionT Class Reference
Inheritance diagram for ControlRegionT:
CuboidRegionObs CuboidRegion ObserverBase Region

Public Types

enum  LocalControlMethod { VelocityScaling , Andersen }
 

Public Member Functions

 ControlRegionT (TemperatureControl *const parent)
 
void readXML (XMLfileUnits &xmlconfig)
 Read in XML configuration for TemperatureControl and all its included objects. More...
 
unsigned int GetID ()
 
void VelocityScalingInit (XMLfileUnits &xmlconfig, std::string strDirections)
 
void CalcGlobalValues (DomainDecompBase *domainDecomp)
 
void MeasureKineticEnergy (Molecule *mol, DomainDecompBase *domainDecomp)
 
void ControlTemperature (Molecule *mol)
 
void ResetLocalValues ()
 
void InitBetaLogfile ()
 
void WriteBetaLogfile (unsigned long simstep)
 
void registerAsObserver ()
 
void update (SubjectBase *subject) override
 
void writeAddedEkin (DomainDecompBase *domainDecomp, const uint64_t &simstep)
 
- Public Member Functions inherited from CuboidRegionObs
 CuboidRegionObs (ControlInstance *parent)
 
 CuboidRegionObs (ControlInstance *parent, double dLC[3], double dUC[3])
 
void update (SubjectBase *subject) override
 
void PrepareAsObserver (const std::vector< uint32_t > &refCoords)
 
- Public Member Functions inherited from CuboidRegion
 CuboidRegion (ControlInstance *parent)
 
 CuboidRegion (ControlInstance *parent, double dLC[3], double dUC[3])
 
double GetLowerCorner (const uint16_t &nDim)
 
double GetUpperCorner (const uint16_t &nDim)
 
void GetLowerCorner (double *dLC)
 
void GetUpperCorner (double *dUC)
 
double * GetLowerCorner ()
 
double * GetUpperCorner ()
 
void SetLowerCorner (const uint16_t &nDim, const double &dVal)
 
void SetUpperCorner (const uint16_t &nDim, const double &dVal)
 
double GetWidth (const uint16_t &nDim)
 
void GetRange (const uint16_t &nDim, double &dRangeBegin, double &dRangeEnd)
 
bool PositionIsInside (const uint16_t &nDim, const double &dPos)
 
bool PositionIsInside (double *dPos)
 
virtual void Print (std::ostream &os)
 
double GetVolume ()
 
- Public Member Functions inherited from Region
unsigned short GetID ()
 
int GetType ()
 
ControlInstanceGetParent ()
 

Public Attributes

LocalControlMethod _localMethod
 

Additional Inherited Members

- Protected Member Functions inherited from Region
 Region (ControlInstance *parent)
 
- Protected Attributes inherited from CuboidRegion
std::array< double, 3 > _dLowerCorner
 
std::array< double, 3 > _dUpperCorner
 
int _nSubdivisionOpt
 
- Protected Attributes inherited from Region
ControlInstance_parent
 
unsigned short _nID
 

Member Function Documentation

◆ readXML()

void ControlRegionT::readXML ( XMLfileUnits xmlconfig)

Read in XML configuration for TemperatureControl and all its included objects.

The following XML object structure is handled by this method:

<thermostats>
<thermostat type="TemperatureControl">
<control>
<start>UNSIGNED_LONG</start> <!-- Timestep turning thermostat ON -->
<frequency>UNSIGNED_LONG</frequency> <!-- Thermosatt is active every <frequency>-th time step -->
<stop>UNSIGNED_LONG</stop> <!-- Timestep turning thermostat OFF -->
</control>
<regions>
<region>
<coords>
<lcx>DOUBLE</lcx> <lcy>DOUBLE</lcy> <lcz>DOUBLE</lcz>
<ucx>DOUBLE</ucx> <ucy>DOUBLE</ucy> <ucz>DOUBLE</ucz>
</coords>
<target>
<temperature>DOUBLE</temperature> <!-- target temperature -->
<ramp> <!-- ramp temperature from <start> to <end> value -->
<start>0.70</start> <!-- start temperature -->
<end>0.80</end> <!-- end temperature -->
<update>
<start>UNSIGNED_LONG</start> <!-- Timestep of ramping start -->
<stop>UNSIGNED_LONG</stop> <!-- Timestep of ramping stop -->
<freq>UNSIGNED_LONG</freq> <!-- adjust target temperature every <freq>-th time
step -->
</update>
</ramp>
<component>1</component> <!-- target component -->
</target>
<settings>
<numslabs>UNSIGNED_LONG</numslabs> <!-- Divide region into <numslabs> slabs -->
<exponent>DOUBLE</exponent> <!-- Damping exponent of thermostat -->
<directions>xyz</directions> <!-- Translational degrees of freedom to be considered
for thermostating: x|y|z|xy|xz|yz|xyz -->
</settings>
<writefreq>5000</writefreq> <!-- Log thermostat scaling factors betaTrans and betaRot
--> <fileprefix>betalog</fileprefix> <!-- Prefix of log file -->
</region>
</region> <!-- Add as much regions as you want! -->
<!-- ... -->
</region>
</regions>
</thermostat>
</thermostats>

◆ update()

void ControlRegionT::update ( SubjectBase subject)
overridevirtual

Implements ObserverBase.


The documentation for this class was generated from the following files: