Open Qmin  0.8.0
GPU-accelerated Q-tensor-based liquid crystal simulations
Public Member Functions | Public Attributes | Protected Attributes | List of all members
energyMinimizerFIRE Class Reference

Implement energy minimization via the FIRE algorithm. More...

#include <energyMinimizerFIRE.h>

Inheritance diagram for energyMinimizerFIRE:
Inheritance graph
[legend]
Collaboration diagram for energyMinimizerFIRE:
Collaboration graph
[legend]

Public Member Functions

 energyMinimizerFIRE ()
 The basic constructor. More...
 
 energyMinimizerFIRE (shared_ptr< simpleModel > system)
 The basic constructor that feeds in a target system to minimize. More...
 
virtual void initializeParameters ()
 Sets a bunch of default parameters that do not depend on the number of degrees of freedom. More...
 
void initializeFromModel ()
 Set a bunch of default initialization parameters (if the State is available to determine the size of vectors) More...
 
void setFIREParameters (scalar deltaT, scalar alphaStart, scalar deltaTMax, scalar deltaTInc, scalar deltaTDec, scalar alphaDec, int nMin, scalar forceCutoff, scalar _alphaMin=0.75)
 Set a lot of parameters! More...
 
void setForceCutoff (scalar fc)
 Set the force cutoff. More...
 
void setDeltaT (scalar dt)
 set the initial value of deltaT More...
 
void setAlphaStart (scalar as)
 set the initial value of alpha and alphaStart More...
 
void setDeltaTMax (scalar tmax)
 Set the maximum deltaT. More...
 
void setDeltaTInc (scalar dti)
 Set the fraction by which delta increments. More...
 
void setDeltaTDec (scalar dtc)
 Set the fraction by which delta decrements. More...
 
void setAlphaDec (scalar ad)
 Set the fraction by which alpha decrements. More...
 
void setNMin (int nm)
 Set the number of consecutive steps P must be non-negative before increasing delatT. More...
 
void fireStep ()
 an interface to call either the CPU or GPU FIRE algorithm More...
 
void fireStepCPU ()
 Perform a velocity Verlet step on the CPU. More...
 
void fireStepGPU ()
 Perform a velocity Verlet step on the GPU. More...
 
void minimize ()
 Minimize to either the force tolerance or the maximum number of iterations. More...
 
virtual void performUpdate ()
 The "intergate equatios of motion just calls minimize. More...
 
virtual scalar getMaxForce ()
 Return the maximum force. More...
 
virtual scalar getClassSize ()
 
virtual void integrateEOMGPU ()
 
virtual void integrateEOMCPU ()
 
virtual void integrateEquationOfMotion ()
 
virtual void Update (int timestep)
 The fundamental function that a controlling Simulation can call. More...
 
void setSimulation (shared_ptr< basicSimulation > _sim)
 set the simulation More...
 
virtual void setModel (shared_ptr< simpleModel > _model)
 virtual function to allow the model to be a derived class More...
 
void setPeriod (int _p)
 set the period More...
 
void setPhase (int _p)
 set the phase More...
 
virtual void spatialSorting ()
 allow for spatial sorting to be called if necessary... More...
 
virtual void setReproducible (bool rep)
 Allow for a reproducibility call to be made. More...
 
virtual void setGPU (bool _useGPU=true)
 Enforce GPU operation. More...
 
int getNdof ()
 Get the number of degrees of freedom of the equation of motion. More...
 
void setNdof (int _n)
 Set the number of degrees of freedom of the equation of motion. More...
 
virtual void setNThreads (int n)
 allow for setting multiple threads More...
 
void setMaximumIterations (int maxIt)
 Set the maximum number of iterations before terminating (or set to -1 to ignore) More...
 
int getCurrentIterations ()
 
int getMaxIterations ()
 
void setCurrentIterations (int newIterations)
 
int getNTotal ()
 communicate the number of non-object sites across ranks More...
 

Public Attributes

GPUArray< dVec > displacement
 an array of displacements More...
 
shared_ptr< basicSimulationsim
 A pointer to the governing simulation. More...
 
shared_ptr< simpleModelmodel
 A pointer to a simpleModel that the updater acts on. More...
 
vector< scalarupdaterData
 
int iterations
 The number of iterations performed. More...
 

Protected Attributes

scalar forceMax
 sqrt(force.force) / N_{dof} More...
 
scalar forceCutoff
 The cutoff value of the maximum force. More...
 
int NMin
 The numer of consecutive time steps the power must be positive before increasing deltaT. More...
 
int NSinceNegativePower
 The numer of consecutive time since the power has be negative. More...
 
scalar deltaTMin
 The minimum time step size. More...
 
scalar deltaTMax
 The maximum time step size. More...
 
scalar deltaTInc
 The fraction by which deltaT can get bigger. More...
 
scalar deltaTDec
 The fraction by which deltaT can get smaller. More...
 
scalar Power
 The internal value of the "power". More...
 
scalar alpha
 The alpha parameter of the minimization routine. More...
 
scalar alphaStart
 The initial value of the alpha parameter. More...
 
scalar alphaDec
 The fraction by which alpha can decrease. More...
 
scalar alphaMin
 The smallest value of alpha. More...
 
scalar scaling
 a multiplicative factor More...
 
GPUArray< scalarsumReductionIntermediate
 Utility array for simple reductions. More...
 
GPUArray< scalarsumReductionIntermediate2
 
GPUArray< scalarsumReductions
 Utility array for simple reductions. More...
 
shared_ptr< kernelTunerdotProductTuner
 kernel tuner for performance More...
 
int nThreads =1
 number of threads to use More...
 
int Period
 The period of the updater... the updater will work every Period timesteps. More...
 
int Phase
 The phase of the updater... the updater will work every Period timesteps offset by a phase. More...
 
bool useGPU
 whether the updater does its work on the GPU or not More...
 
bool neverGPU
 whether the updater never does work on the GPU More...
 
int Ndof
 some measure of the number of degrees of freedom the equations of motion might need to know about locally More...
 
int nTotal
 the total number of non-object sites across all ranks More...
 
bool reproducible
 whether the RNGs give reproducible results More...
 
scalar deltaT
 The internal time step size. More...
 
int maxIterations
 The maximum number of iterations allowed. More...
 

Detailed Description

Implement energy minimization via the FIRE algorithm.

This class uses the "FIRE" algorithm to perform an energy minimization. The class is in the same framework as the simpleEquationOfMotion class, so it is called by calling performTimestep on a Simulation object that has been given the FIRE minimizer and the configuration to minimize. Each timestep, though, is a complete minimization (i.e. will run for the maximum number of iterations, or until a target tolerance has been acheived, or whatever stopping condition the user sets.

Constructor & Destructor Documentation

◆ energyMinimizerFIRE() [1/2]

energyMinimizerFIRE::energyMinimizerFIRE ( )
inline

The basic constructor.

References initializeParameters().

◆ energyMinimizerFIRE() [2/2]

energyMinimizerFIRE::energyMinimizerFIRE ( shared_ptr< simpleModel system)

The basic constructor that feeds in a target system to minimize.

Initialize the minimizer with a reference to a target system, set a bunch of default parameters. Of note, the current default is CPU operation

References initializeFromModel(), initializeParameters(), and updater::setModel().

Member Function Documentation

◆ initializeParameters()

void energyMinimizerFIRE::initializeParameters ( )
virtual

Sets a bunch of default parameters that do not depend on the number of degrees of freedom.

Initialize the minimizer with some default parameters. that do not depend on Ndof

References alphaMin, dotProductTuner, forceMax, updater::iterations, updater::Ndof, NSinceNegativePower, updater::nTotal, Power, setAlphaDec(), setAlphaStart(), setDeltaT(), setDeltaTDec(), setDeltaTInc(), setDeltaTMax(), setForceCutoff(), updater::setGPU(), updater::setMaximumIterations(), setNMin(), and updater::updaterData.

Referenced by energyMinimizerFIRE().

◆ initializeFromModel()

void energyMinimizerFIRE::initializeFromModel ( )
virtual

Set a bunch of default initialization parameters (if the State is available to determine the size of vectors)

Initialize the minimizer with some default parameters.

Precondition
requires a Simple2DModel (to set N correctly) to be already known

Reimplemented from equationOfMotion.

References equationOfMotion::displacement, updater::model, updater::Ndof, updater::neverGPU, GPUArray< T >::noGPU, GPUArray< T >::resize(), sumReductionIntermediate, sumReductionIntermediate2, and sumReductions.

Referenced by energyMinimizerFIRE(), and minimize().

◆ setFIREParameters()

void energyMinimizerFIRE::setFIREParameters ( scalar  deltaT,
scalar  alphaStart,
scalar  deltaTMax,
scalar  deltaTInc,
scalar  deltaTDec,
scalar  alphaDec,
int  nMin,
scalar  forceCutoff,
scalar  _alphaMin = 0.75 
)

◆ setForceCutoff()

void energyMinimizerFIRE::setForceCutoff ( scalar  fc)
inline

Set the force cutoff.

References forceCutoff.

Referenced by initializeParameters(), and setFIREParameters().

◆ setDeltaT()

void energyMinimizerFIRE::setDeltaT ( scalar  dt)
inlinevirtual

set the initial value of deltaT

Reimplemented from updater.

References updater::deltaT, and deltaTMin.

Referenced by initializeParameters(), and setFIREParameters().

◆ setAlphaStart()

void energyMinimizerFIRE::setAlphaStart ( scalar  as)
inline

set the initial value of alpha and alphaStart

References alpha, and alphaStart.

Referenced by initializeParameters(), and setFIREParameters().

◆ setDeltaTMax()

void energyMinimizerFIRE::setDeltaTMax ( scalar  tmax)
inline

Set the maximum deltaT.

References deltaTMax.

Referenced by initializeParameters(), and setFIREParameters().

◆ setDeltaTInc()

void energyMinimizerFIRE::setDeltaTInc ( scalar  dti)
inline

Set the fraction by which delta increments.

References deltaTInc.

Referenced by initializeParameters(), and setFIREParameters().

◆ setDeltaTDec()

void energyMinimizerFIRE::setDeltaTDec ( scalar  dtc)
inline

Set the fraction by which delta decrements.

References deltaTDec.

Referenced by initializeParameters(), and setFIREParameters().

◆ setAlphaDec()

void energyMinimizerFIRE::setAlphaDec ( scalar  ad)
inline

Set the fraction by which alpha decrements.

References alphaDec.

Referenced by initializeParameters(), and setFIREParameters().

◆ setNMin()

void energyMinimizerFIRE::setNMin ( int  nm)
inline

Set the number of consecutive steps P must be non-negative before increasing delatT.

References NMin.

Referenced by initializeParameters(), and setFIREParameters().

◆ fireStep()

void energyMinimizerFIRE::fireStep ( )

an interface to call either the CPU or GPU FIRE algorithm

Call the correct FIRE step routine

References fireStepCPU(), fireStepGPU(), and updater::useGPU.

Referenced by minimize().

◆ fireStepCPU()

void energyMinimizerFIRE::fireStepCPU ( )

◆ fireStepGPU()

void energyMinimizerFIRE::fireStepGPU ( )

◆ minimize()

void energyMinimizerFIRE::minimize ( )

Minimize to either the force tolerance or the maximum number of iterations.

Perform a FIRE minimization step on the CPU...attempts to get attain: (1/N)\sum_i|f_i|^2 < forceCutoff

References alpha, updater::deltaT, fireStep(), forceCutoff, forceMax, initializeFromModel(), equationOfMotion::integrateEquationOfMotion(), updater::iterations, updater::model, updater::Ndof, Power, scaling, and updater::sim.

Referenced by performUpdate().

◆ performUpdate()

virtual void energyMinimizerFIRE::performUpdate ( )
inlinevirtual

The "intergate equatios of motion just calls minimize.

Reimplemented from equationOfMotion.

References minimize().

◆ getMaxForce()

virtual scalar energyMinimizerFIRE::getMaxForce ( )
inlinevirtual

Return the maximum force.

Reimplemented from updater.

References forceMax.

◆ getClassSize()

virtual scalar energyMinimizerFIRE::getClassSize ( )
inlinevirtual

◆ integrateEOMGPU()

void velocityVerlet::integrateEOMGPU ( )
virtualinherited

◆ integrateEOMCPU()

void velocityVerlet::integrateEOMCPU ( )
virtualinherited

◆ integrateEquationOfMotion()

virtual void equationOfMotion::integrateEquationOfMotion ( )
inlinevirtualinherited

◆ Update()

virtual void updater::Update ( int  timestep)
inlinevirtualinherited

The fundamental function that a controlling Simulation can call.

References updater::performUpdate(), updater::Period, and updater::Phase.

◆ setSimulation()

void updater::setSimulation ( shared_ptr< basicSimulation _sim)
inlineinherited

set the simulation

References updater::sim.

◆ setModel()

virtual void updater::setModel ( shared_ptr< simpleModel _model)
inlinevirtualinherited

◆ setPeriod()

void updater::setPeriod ( int  _p)
inlineinherited

set the period

References updater::Period.

◆ setPhase()

void updater::setPhase ( int  _p)
inlineinherited

set the phase

References updater::Phase.

◆ spatialSorting()

virtual void updater::spatialSorting ( )
inlinevirtualinherited

allow for spatial sorting to be called if necessary...

◆ setReproducible()

virtual void updater::setReproducible ( bool  rep)
inlinevirtualinherited

Allow for a reproducibility call to be made.

References updater::reproducible.

◆ setGPU()

virtual void updater::setGPU ( bool  _useGPU = true)
inlinevirtualinherited

◆ getNdof()

int updater::getNdof ( )
inlineinherited

Get the number of degrees of freedom of the equation of motion.

References updater::Ndof.

◆ setNdof()

void updater::setNdof ( int  _n)
inlineinherited

Set the number of degrees of freedom of the equation of motion.

References updater::Ndof.

◆ setNThreads()

virtual void updater::setNThreads ( int  n)
inlinevirtualinherited

allow for setting multiple threads

References n, and updater::nThreads.

◆ setMaximumIterations()

void updater::setMaximumIterations ( int  maxIt)
inlineinherited

◆ getCurrentIterations()

int updater::getCurrentIterations ( )
inlineinherited

References updater::iterations.

◆ getMaxIterations()

int updater::getMaxIterations ( )
inlineinherited

◆ setCurrentIterations()

void updater::setCurrentIterations ( int  newIterations)
inlineinherited

References updater::iterations.

◆ getNTotal()

int updater::getNTotal ( )
inherited

communicate the number of non-object sites across ranks

References access_location::host, updater::model, updater::Ndof, updater::nTotal, access_mode::read, updater::sim, and updater::updaterData.

Member Data Documentation

◆ forceMax

scalar energyMinimizerFIRE::forceMax
protected

◆ forceCutoff

scalar energyMinimizerFIRE::forceCutoff
protected

The cutoff value of the maximum force.

Referenced by minimize(), setFIREParameters(), and setForceCutoff().

◆ NMin

int energyMinimizerFIRE::NMin
protected

The numer of consecutive time steps the power must be positive before increasing deltaT.

Referenced by fireStepCPU(), fireStepGPU(), and setNMin().

◆ NSinceNegativePower

int energyMinimizerFIRE::NSinceNegativePower
protected

The numer of consecutive time since the power has be negative.

Referenced by fireStepCPU(), fireStepGPU(), and initializeParameters().

◆ deltaTMin

scalar energyMinimizerFIRE::deltaTMin
protected

The minimum time step size.

Referenced by fireStepCPU(), fireStepGPU(), and setDeltaT().

◆ deltaTMax

scalar energyMinimizerFIRE::deltaTMax
protected

The maximum time step size.

Referenced by fireStepCPU(), fireStepGPU(), setDeltaTMax(), and setFIREParameters().

◆ deltaTInc

scalar energyMinimizerFIRE::deltaTInc
protected

The fraction by which deltaT can get bigger.

Referenced by fireStepCPU(), fireStepGPU(), setDeltaTInc(), and setFIREParameters().

◆ deltaTDec

scalar energyMinimizerFIRE::deltaTDec
protected

The fraction by which deltaT can get smaller.

Referenced by fireStepCPU(), fireStepGPU(), setDeltaTDec(), and setFIREParameters().

◆ Power

scalar energyMinimizerFIRE::Power
protected

The internal value of the "power".

Referenced by fireStepCPU(), fireStepGPU(), initializeParameters(), and minimize().

◆ alpha

scalar energyMinimizerFIRE::alpha
protected

The alpha parameter of the minimization routine.

Referenced by fireStepCPU(), fireStepGPU(), minimize(), and setAlphaStart().

◆ alphaStart

scalar energyMinimizerFIRE::alphaStart
protected

The initial value of the alpha parameter.

Referenced by fireStepCPU(), fireStepGPU(), setAlphaStart(), and setFIREParameters().

◆ alphaDec

scalar energyMinimizerFIRE::alphaDec
protected

The fraction by which alpha can decrease.

Referenced by fireStepCPU(), fireStepGPU(), setAlphaDec(), and setFIREParameters().

◆ alphaMin

scalar energyMinimizerFIRE::alphaMin
protected

The smallest value of alpha.

Referenced by fireStepCPU(), fireStepGPU(), initializeParameters(), and setFIREParameters().

◆ scaling

scalar energyMinimizerFIRE::scaling
protected

a multiplicative factor

Referenced by fireStepCPU(), fireStepGPU(), and minimize().

◆ sumReductionIntermediate

GPUArray<scalar> energyMinimizerFIRE::sumReductionIntermediate
protected

Utility array for simple reductions.

Referenced by fireStepGPU(), getClassSize(), and initializeFromModel().

◆ sumReductionIntermediate2

GPUArray<scalar> energyMinimizerFIRE::sumReductionIntermediate2
protected

◆ sumReductions

GPUArray<scalar> energyMinimizerFIRE::sumReductions
protected

Utility array for simple reductions.

Referenced by getClassSize(), and initializeFromModel().

◆ dotProductTuner

shared_ptr<kernelTuner> energyMinimizerFIRE::dotProductTuner
protected

kernel tuner for performance

Referenced by initializeParameters().

◆ displacement

GPUArray<dVec> equationOfMotion::displacement
inherited

◆ sim

shared_ptr<basicSimulation> updater::sim
inherited

◆ model

shared_ptr<simpleModel> updater::model
inherited

◆ updaterData

vector<scalar> updater::updaterData
inherited

◆ iterations

int updater::iterations
inherited

◆ nThreads

int updater::nThreads =1
protectedinherited

number of threads to use

Referenced by updater::setNThreads().

◆ Period

int updater::Period
protectedinherited

The period of the updater... the updater will work every Period timesteps.

Referenced by updater::setPeriod(), updater::Update(), and updater::updater().

◆ Phase

int updater::Phase
protectedinherited

The phase of the updater... the updater will work every Period timesteps offset by a phase.

Referenced by updater::setPhase(), updater::Update(), and updater::updater().

◆ useGPU

bool updater::useGPU
protectedinherited

◆ neverGPU

bool updater::neverGPU
protectedinherited

◆ Ndof

int updater::Ndof
protectedinherited

◆ nTotal

int updater::nTotal
protectedinherited

◆ reproducible

bool updater::reproducible
protectedinherited

whether the RNGs give reproducible results

Referenced by updater::setReproducible(), and updater::updater().

◆ deltaT

scalar updater::deltaT
protectedinherited

◆ maxIterations

int updater::maxIterations
protectedinherited

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