QMCPACK
SFNBranch Class Reference

Manages the state of QMC sections and handles population control for DMCs. More...

+ Inheritance diagram for SFNBranch:
+ Collaboration diagram for SFNBranch:

Classes

struct  VParams
 controlling parameters of full precision real type More...
 

Public Types

enum  {
  B_DMC = 0, B_DMCSTAGE = 1, B_POPCONTROL = 2, B_USETAUEFF = 3,
  B_CLEARHISTORY = 4, B_KILLNODES = 5, B_RESTART = 6, B_RMC = 7,
  B_RMCSTAGE = 8, B_MODE_MAX = 10
}
 
enum  {
  B_WARMUPSTEPS = 0, B_ENERGYUPDATEINTERVAL, B_COUNTER, B_TARGETWALKERS,
  B_BRANCHINTERVAL, B_IPARAM_MAX
}
 
enum  SimpleBranchVectorParameter {
  TAU = 0, TAUEFF, ETRIAL, EREF,
  ENOW, BRANCHMAX, BRANCHCUTOFF, BRANCHFILTER,
  SIGMA2, SIGMA_BOUND, FEEDBACK, FILTERSCALE,
  VPARAM_MAX = 17
}
 enum for vParam More...
 
using MCPWalker = Walker< QMCTraits, PtclOnLatticeTraits >
 
using BranchModeType = std::bitset< B_MODE_MAX >
 
using IParamType = TinyVector< int, B_IPARAM_MAX >
 input parameters of integer types More...
 
using SBVP = SimpleBranchVectorParameter
 
using VParamType = VParams< SBVP >
 
- Public Types inherited from QMCTraits
enum  { DIM = OHMMS_DIM, DIM_VGL = OHMMS_DIM + 2 }
 
using QTBase = QMCTypes< OHMMS_PRECISION, DIM >
 
using QTFull = QMCTypes< OHMMS_PRECISION_FULL, DIM >
 
using RealType = QTBase::RealType
 
using ComplexType = QTBase::ComplexType
 
using ValueType = QTBase::ValueType
 
using PosType = QTBase::PosType
 
using GradType = QTBase::GradType
 
using TensorType = QTBase::TensorType
 
using IndexType = OHMMS_INDEXTYPE
 define other types More...
 
using FullPrecRealType = QTFull::RealType
 
using FullPrecValueType = QTFull::ValueType
 
using PropertySetType = RecordNamedProperty< FullPrecRealType >
 define PropertyList_t More...
 
using PtclGrpIndexes = std::vector< std::pair< int, int > >
 

Public Member Functions

 SFNBranch (RealType tau, RealType feedback, DMCRefEnergyScheme)
 Constructor. More...
 
 SFNBranch (const SFNBranch &abranch)=delete
 copy constructor More...
 
 ~SFNBranch ()
 
bool phaseChanged (RealType psi0) const
 
void advanceQMCCounter ()
 increment QMCCounter More...
 
void regressQMCCounter ()
 
int initParam (const MCPopulation &population, FullPrecRealType ene, FullPrecRealType var, bool fixW, bool killwalker)
 initialize branching parameters More...
 
RealType branchWeightBare (RealType enew, RealType eold) const
 return the bare branch weight More...
 
RealType branchWeight (FullPrecRealType enew, FullPrecRealType eold) const
 return the bare branch weight with a filtering using an energy window More...
 
RealType symLinkAction (RealType logGf, RealType logGb, RealType enew, RealType eold) const
 
RealType symLinkActionBare (RealType logGf, RealType logGb, RealType enew, RealType eold) const
 
RealType DMCLinkAction (RealType enew, RealType eold) const
 
RealType branchWeight (RealType enew, RealType eold, RealType scnew, RealType scold) const
 return the branch weight according to JCP1993 Umrigar et al. More...
 
RealType branchWeight (RealType enew, RealType eold, RealType scnew, RealType scold, RealType p) const
 return the branch weight according to JCP1993 Umrigar et al. More...
 
RealType getEref () const
 
RealType getEtrial () const
 
RealType getTau () const
 
RealType getTauEff () const
 
int getWarmupToDoSteps () const
 
void updateParamAfterPopControl (const MCDataType< FullPrecRealType > &wc_ensemble_prop, int Nelec)
 perform branching More...
 
bool put (xmlNodePtr cur)
 Parse the xml file for parameters. More...
 
void registerParameters ()
 create map between the parameter name and variables More...
 
void printStatus () const
 finalize the simulation More...
 

Private Member Functions

void setBranchCutoff (FullPrecRealType variance, FullPrecRealType targetSigma, FullPrecRealType maxSigma, int Nelec=0)
 set branch cutoff, max, filter More...
 

Private Attributes

BranchModeType BranchMode
 
IParamType iParam
 
VParamType vParam
 
int WarmUpToDoSteps
 number of remaning steps in warmup, [0, iParam[B_WARMUPSTEPS]] More...
 
int EtrialUpdateToDoSteps
 number of remaning steps in before adjusting ETRIAL, [0, iParam[B_ENERGYUPDATEINTERVAL]] More...
 
xmlNodePtr myNode
 save xml element More...
 
DMCRefEnergy ref_energy_collector
 collect energy and variance history More...
 
accumulator_set< RealTypeR2Accepted
 a simple accumulator for energy More...
 
accumulator_set< RealTypeR2Proposed
 a simple accumulator for energy More...
 
accumulator_set< RealTypeR2Center
 a simple accumulator for reptation's center slice More...
 
std::string branching_cutoff_scheme
 scheme of branching cutoff More...
 
ParameterSet m_param
 set of parameters More...
 
std::vector< std::string > sParam
 string parameters More...
 

Friends

std::ostream & operator<< (std::ostream &os, SFNBranch::VParamType &rhs)
 

Detailed Description

Manages the state of QMC sections and handles population control for DMCs.

Todo:

: Remove duplicate reading of Driver XML section with own copies of input parameters.

: Rename, it is the only branching class so its name is too much

: Use normal types for data members, don't be clever, the parameter enums violate KISS and make debugging annoying

: Remove as much state as possible.

QMCDriver object owns a SFNBranch to keep track of the progress of a qmc section. It implements several methods to control the population and trial energy during a DMC and evaluate the properties of a population, e.g., energy, variance, population etc.

See also
{http://qmcpack.cmscc.org/qmc-basics}

Steps in SFNB states machine

  1. Construction (gets global walker number (rank or section wide?)
  2. put(reads driver XML node yet again)
  3. InitParam a. If TargetWalkers isn't known aa. allreduce and updates MCMW globalWalkers. bb. sets target walkers to whatever current total active walkers is. b. If not a restart aa. saves fixW and killWalker to internal params, otherwise just discards. bb. updates SFNB copy of MAX/MINWALKRS from walker controller, these were set in constructer but I guess thats ony if this is a restart
  4. updateParam after each walker control branch (outside SFNBranch) a. Not first iter during warmup then call WalkerController branch. else call WC doNotBranch, returns pop_now b. copy a bunch a state from WC to SFNB (should be with respect to pop_now - number of released nodes) c. If using taueff update that based on acceptance ration and current tau. d. If not warmup calculate ETRIAL based on EREF and feedback * log(TargetWalkers) - log(pop_now) e. set WC's TrialEnergy

Definition at line 63 of file SFNBranch.h.

Member Typedef Documentation

◆ BranchModeType

using BranchModeType = std::bitset<B_MODE_MAX>

Definition at line 94 of file SFNBranch.h.

◆ IParamType

input parameters of integer types

Since
2008-05-05

Definition at line 113 of file SFNBranch.h.

◆ MCPWalker

Definition at line 66 of file SFNBranch.h.

◆ SBVP

Definition at line 138 of file SFNBranch.h.

◆ VParamType

Definition at line 151 of file SFNBranch.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

enum for booleans

Since
2008-05-05
Enumerator
B_DMC 

1 for dmc, 0 for anything else

B_DMCSTAGE 

1 for main, 0 for wamrup

B_POPCONTROL 

1 for the standard dmc, 0 for the comb method

B_USETAUEFF 

1 to use taueff accordning to JCP 93, 0 to use tau

B_CLEARHISTORY 

1 to clear the history

B_KILLNODES 

1 to kill walkers when a node crossing is detected

B_RESTART 

1 if restarting

B_RMC 

1 for rmc, 0 for anything else

B_RMCSTAGE 

1 for main, 0 for warmup

B_MODE_MAX 

size of BranchMode

Definition at line 71 of file SFNBranch.h.

72  {
73  B_DMC = 0 /**< 1 for dmc, 0 for anything else */
74  ,
75  B_DMCSTAGE = 1 /**< 1 for main, 0 for wamrup */
76  ,
77  B_POPCONTROL = 2 /**< 1 for the standard dmc, 0 for the comb method */
78  ,
79  B_USETAUEFF = 3 /**< 1 to use taueff accordning to JCP 93, 0 to use tau */
80  ,
81  B_CLEARHISTORY = 4 /**< 1 to clear the history */
82  ,
83  B_KILLNODES = 5 /**< 1 to kill walkers when a node crossing is detected */
84  ,
85  B_RESTART = 6 /**< 1 if restarting */
86  ,
87  B_RMC = 7 /**< 1 for rmc, 0 for anything else */
88  ,
89  B_RMCSTAGE = 8 /**< 1 for main, 0 for warmup */
90  ,
91  B_MODE_MAX = 10 /**< size of BranchMode */
92  };
1 for main, 0 for warmup
Definition: SFNBranch.h:89
1 for main, 0 for wamrup
Definition: SFNBranch.h:75
1 to clear the history
Definition: SFNBranch.h:81
1 for dmc, 0 for anything else
Definition: SFNBranch.h:73
1 for rmc, 0 for anything else
Definition: SFNBranch.h:87
1 to use taueff accordning to JCP 93, 0 to use tau
Definition: SFNBranch.h:79
1 to kill walkers when a node crossing is detected
Definition: SFNBranch.h:83
1 for the standard dmc, 0 for the comb method
Definition: SFNBranch.h:77

◆ anonymous enum

anonymous enum

enum for iParam std::bitset<B_IPARAM_MAX> When introducing a new iParam, check if B_IPARAM_MAX is sufficiently large. Use multiples of 8 Why? Much easier to use bool flags. Are these ever serialized?

Enumerator
B_WARMUPSTEPS 

warmup steps, valid when BranchMode[D_DMCSTAGE] == 0

B_ENERGYUPDATEINTERVAL 

frequency of the trial energy updates, default 1

B_COUNTER 

counter for tracking object state

B_TARGETWALKERS 

target total number of walkers per mpi group

B_BRANCHINTERVAL 

interval between branch, see population control

B_IPARAM_MAX 

size of iParam

Definition at line 100 of file SFNBranch.h.

101  {
102  B_WARMUPSTEPS = 0, /**< warmup steps, valid when BranchMode[D_DMCSTAGE] == 0 */
103  B_ENERGYUPDATEINTERVAL, /**< frequency of the trial energy updates, default 1 */
104  B_COUNTER, /**< counter for tracking object state */
105  B_TARGETWALKERS, /**< target total number of walkers per mpi group */
106  B_BRANCHINTERVAL, /**< interval between branch, see population control */
107  B_IPARAM_MAX /**< size of iParam */
108  };
interval between branch, see population control
Definition: SFNBranch.h:106
counter for tracking object state
Definition: SFNBranch.h:104
warmup steps, valid when BranchMode[D_DMCSTAGE] == 0
Definition: SFNBranch.h:102
target total number of walkers per mpi group
Definition: SFNBranch.h:105
frequency of the trial energy updates, default 1
Definition: SFNBranch.h:103

◆ SimpleBranchVectorParameter

enum for vParam

Easy serialization is a relatively minor concern compared to the annoyance this causes elsewhere.

Enumerator
TAU 
TAUEFF 
ETRIAL 
EREF 
ENOW 
BRANCHMAX 
BRANCHCUTOFF 
BRANCHFILTER 
SIGMA2 
SIGMA_BOUND 
FEEDBACK 
FILTERSCALE 
VPARAM_MAX 

Definition at line 120 of file SFNBranch.h.

121  {
122  TAU = 0,
123  TAUEFF, // effective time step
124  ETRIAL, // Trial energy
125  EREF, // Estimate of the ground state energy based on the single step population average during warmup
126  // or the historical average of population average post warmup.
127  // Center of the branching cutoff energy window.
128  ENOW, // weighted average energy of the population in the current step
129  BRANCHMAX,
130  BRANCHCUTOFF,
131  BRANCHFILTER,
132  SIGMA2,
133  SIGMA_BOUND,
134  FEEDBACK,
135  FILTERSCALE,
136  VPARAM_MAX = 17 // four extra, why? Sloppy or undocumented hack?
137  };

Constructor & Destructor Documentation

◆ SFNBranch() [1/2]

SFNBranch ( RealType  tau,
RealType  feedback,
DMCRefEnergyScheme  refenergy_update_scheme 
)

Constructor.

Definition at line 34 of file SFNBranch.cpp.

References SFNBranch::B_BRANCHINTERVAL, SFNBranch::B_CLEARHISTORY, SFNBranch::B_COUNTER, SFNBranch::B_DMCSTAGE, SFNBranch::B_ENERGYUPDATEINTERVAL, SFNBranch::B_KILLNODES, SFNBranch::B_POPCONTROL, SFNBranch::B_TARGETWALKERS, SFNBranch::B_USETAUEFF, SFNBranch::B_WARMUPSTEPS, SFNBranch::branching_cutoff_scheme, SFNBranch::BranchMode, qmcplusplus::DUMMYOPT, qmcplusplus::Units::charge::e, SFNBranch::FEEDBACK, SFNBranch::FILTERSCALE, SFNBranch::iParam, SFNBranch::R2Accepted, SFNBranch::R2Proposed, SFNBranch::registerParameters(), SFNBranch::SIGMA_BOUND, SFNBranch::sParam, SFNBranch::TAU, SFNBranch::TAUEFF, and SFNBranch::vParam.

35  : WarmUpToDoSteps(0),
37  myNode(NULL),
38  ref_energy_collector(refenergy_update_scheme, std::max(1, static_cast<int>(1.0 / (feedback * tau))))
39 {
40  BranchMode.set(B_DMCSTAGE, 0); //warmup stage
41  BranchMode.set(B_POPCONTROL, 1); //use standard DMC
42  BranchMode.set(B_USETAUEFF, 1); //use taueff
43  BranchMode.set(B_CLEARHISTORY, 0); //clear history and start with the current average
44  BranchMode.set(B_KILLNODES, 0); //when killing walkers at nodes etrial is updated differently
45  vParam.fill(1.0);
46  vParam[SBVP::TAU] = tau;
47  vParam[SBVP::TAUEFF] = tau;
48  vParam[SBVP::FEEDBACK] = feedback;
51  R2Accepted(1.0e-10);
52  R2Proposed(1.0e-10);
53  //set the default values for integer parameters
54  iParam[B_WARMUPSTEPS] = 200;
58  iParam[B_COUNTER] = -1;
59  //default is no
60  sParam.resize(DUMMYOPT, "no");
61  //default is classic
62  branching_cutoff_scheme = "classic";
64 }
1 for main, 0 for wamrup
Definition: SFNBranch.h:75
int WarmUpToDoSteps
number of remaning steps in warmup, [0, iParam[B_WARMUPSTEPS]]
Definition: SFNBranch.h:306
BranchModeType BranchMode
Definition: SFNBranch.h:300
DMCRefEnergy ref_energy_collector
collect energy and variance history
Definition: SFNBranch.h:312
xmlNodePtr myNode
save xml element
Definition: SFNBranch.h:310
accumulator_set< RealType > R2Accepted
a simple accumulator for energy
Definition: SFNBranch.h:314
1 to clear the history
Definition: SFNBranch.h:81
interval between branch, see population control
Definition: SFNBranch.h:106
int EtrialUpdateToDoSteps
number of remaning steps in before adjusting ETRIAL, [0, iParam[B_ENERGYUPDATEINTERVAL]] ...
Definition: SFNBranch.h:308
counter for tracking object state
Definition: SFNBranch.h:104
1 to use taueff accordning to JCP 93, 0 to use tau
Definition: SFNBranch.h:79
warmup steps, valid when BranchMode[D_DMCSTAGE] == 0
Definition: SFNBranch.h:102
target total number of walkers per mpi group
Definition: SFNBranch.h:105
std::string branching_cutoff_scheme
scheme of branching cutoff
Definition: SFNBranch.h:322
void registerParameters()
create map between the parameter name and variables
Definition: SFNBranch.cpp:68
frequency of the trial energy updates, default 1
Definition: SFNBranch.h:103
accumulator_set< RealType > R2Proposed
a simple accumulator for energy
Definition: SFNBranch.h:316
1 to kill walkers when a node crossing is detected
Definition: SFNBranch.h:83
1 for the standard dmc, 0 for the comb method
Definition: SFNBranch.h:77
std::vector< std::string > sParam
string parameters
Definition: SFNBranch.h:326

◆ SFNBranch() [2/2]

SFNBranch ( const SFNBranch abranch)
delete

copy constructor

◆ ~SFNBranch()

~SFNBranch ( )
default

Member Function Documentation

◆ advanceQMCCounter()

void advanceQMCCounter ( )
inline

increment QMCCounter

QMCCounter is the number of times any QMC section is processed.

Definition at line 175 of file SFNBranch.h.

References SFNBranch::B_COUNTER, and SFNBranch::iParam.

175 { iParam[B_COUNTER]++; }
counter for tracking object state
Definition: SFNBranch.h:104

◆ branchWeight() [1/3]

RealType branchWeight ( FullPrecRealType  enew,
FullPrecRealType  eold 
) const
inline

return the bare branch weight with a filtering using an energy window

Cutoff values are set by the variance

Definition at line 199 of file SFNBranch.h.

References SFNBranch::BRANCHCUTOFF, SFNBranch::BRANCHFILTER, SFNBranch::BRANCHMAX, SFNBranch::EREF, SFNBranch::ETRIAL, qmcplusplus::exp(), SFNBranch::TAUEFF, and SFNBranch::vParam.

Referenced by DMCBatched::advanceWalkers().

◆ branchWeight() [2/3]

RealType branchWeight ( RealType  enew,
RealType  eold,
RealType  scnew,
RealType  scold 
) const
inline

return the branch weight according to JCP1993 Umrigar et al.

Appendix A p=1, q=0

Parameters
enewnew energy
eoldold energy
scnew$ V_{sc}(R_{new})/V(R_{new}) $
scold$ V_{sc}(R_{old})/V(R_{old}) $

Definition at line 249 of file SFNBranch.h.

References SFNBranch::EREF, SFNBranch::ETRIAL, qmcplusplus::exp(), SFNBranch::TAUEFF, and SFNBranch::vParam.

250  {
251  FullPrecRealType s1 = (vParam[SBVP::ETRIAL] - vParam[SBVP::EREF]) + (vParam[SBVP::EREF] - enew) * scnew;
252  FullPrecRealType s0 = (vParam[SBVP::ETRIAL] - vParam[SBVP::EREF]) + (vParam[SBVP::EREF] - eold) * scold;
253  return std::exp(vParam[SBVP::TAUEFF] * 0.5 * (s1 + s0));
254  }
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)
QTFull::RealType FullPrecRealType
Definition: Configuration.h:66

◆ branchWeight() [3/3]

RealType branchWeight ( RealType  enew,
RealType  eold,
RealType  scnew,
RealType  scold,
RealType  p 
) const
inline

return the branch weight according to JCP1993 Umrigar et al.

Appendix A

Parameters
enewnew energy
eoldold energy
scnew$ V_{sc}(R_{new})/V(R_{new}) $
scold$ V_{sc}(R_{old})/V(R_{old}) $
pacceptance ratio

Definition at line 263 of file SFNBranch.h.

References SFNBranch::EREF, SFNBranch::ETRIAL, qmcplusplus::exp(), SFNBranch::TAUEFF, and SFNBranch::vParam.

264  {
265  FullPrecRealType s1 = (vParam[SBVP::ETRIAL] - vParam[SBVP::EREF]) + (vParam[SBVP::EREF] - enew) * scnew;
266  FullPrecRealType s0 = (vParam[SBVP::ETRIAL] - vParam[SBVP::EREF]) + (vParam[SBVP::EREF] - eold) * scold;
267  return std::exp(vParam[SBVP::TAUEFF] * (p * 0.5 * (s1 - s0) + s0));
268  //return std::exp(TauEff*(p*0.5*(sp-sq)+sq));
269  }
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)
QTFull::RealType FullPrecRealType
Definition: Configuration.h:66

◆ branchWeightBare()

RealType branchWeightBare ( RealType  enew,
RealType  eold 
) const
inline

return the bare branch weight

This is equivalent to calling branchWeight(enew,eold,1.0,1.0)

Definition at line 190 of file SFNBranch.h.

References SFNBranch::ETRIAL, qmcplusplus::exp(), SFNBranch::TAUEFF, and SFNBranch::vParam.

191  {
192  return std::exp(vParam[SBVP::TAUEFF] * (vParam[SBVP::ETRIAL] - 0.5 * (enew + eold)));
193  }
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)

◆ DMCLinkAction()

◆ getEref()

RealType getEref ( ) const
inline

◆ getEtrial()

RealType getEtrial ( ) const
inline

◆ getTau()

RealType getTau ( ) const
inline

◆ getTauEff()

RealType getTauEff ( ) const
inline

◆ getWarmupToDoSteps()

int getWarmupToDoSteps ( ) const
inline

Definition at line 276 of file SFNBranch.h.

References SFNBranch::WarmUpToDoSteps.

276 { return WarmUpToDoSteps; }
int WarmUpToDoSteps
number of remaning steps in warmup, [0, iParam[B_WARMUPSTEPS]]
Definition: SFNBranch.h:306

◆ initParam()

int initParam ( const MCPopulation population,
FullPrecRealType  ene,
FullPrecRealType  var,
bool  fixW,
bool  killwalker 
)

initialize branching parameters

Parameters
popPopulation of Walkers
fixWtrue, if reconfiguration with the fixed number of walkers is used
killwalker
Returns
number of copies to make in case targetwalkers changed

FIXME, magic number 50

Definition at line 94 of file SFNBranch.cpp.

References qmcplusplus::app_log(), SFNBranch::B_COUNTER, SFNBranch::B_DMC, SFNBranch::B_DMCSTAGE, SFNBranch::B_KILLNODES, SFNBranch::B_POPCONTROL, SFNBranch::B_TARGETWALKERS, SFNBranch::B_WARMUPSTEPS, SFNBranch::BRANCHCUTOFF, SFNBranch::branching_cutoff_scheme, SFNBranch::BRANCHMAX, SFNBranch::BranchMode, SFNBranch::EREF, SFNBranch::ETRIAL, SFNBranch::FEEDBACK, MCPopulation::get_golden_electrons(), MCPopulation::get_num_global_walkers(), ParticleSet::getTotalNum(), SFNBranch::iParam, SFNBranch::R2Accepted, SFNBranch::R2Proposed, accumulator_set< T, typename >::result(), SFNBranch::setBranchCutoff(), SFNBranch::SIGMA2, SFNBranch::SIGMA_BOUND, SFNBranch::TAU, SFNBranch::TAUEFF, and SFNBranch::vParam.

99 {
100  app_log() << " START ALL OVER " << std::endl;
101  BranchMode.set(B_POPCONTROL, !fixW); //fixW -> 0
102  BranchMode.set(B_KILLNODES, killwalker);
103 
104  BranchMode.set(B_DMC, 1); //set DMC
105  BranchMode.set(B_DMCSTAGE, iParam[B_WARMUPSTEPS] == 0); //use warmup
106  vParam[SBVP::ETRIAL] = ene;
107  vParam[SBVP::EREF] = ene;
108  vParam[SBVP::SIGMA2] = var;
110  /// FIXME, magic number 50
111  setBranchCutoff(vParam[SBVP::SIGMA2], vParam[SBVP::SIGMA_BOUND], 50, population.get_golden_electrons().getTotalNum());
112 
113  int nwtot_now = population.get_num_global_walkers();
114  if (iParam[B_TARGETWALKERS] == 0)
115  iParam[B_TARGETWALKERS] = nwtot_now;
116 
117  app_log() << " QMC counter = " << iParam[B_COUNTER] << std::endl;
118  app_log() << " time step = " << vParam[SBVP::TAU] << std::endl;
119  app_log() << " effective time step = " << vParam[SBVP::TAUEFF] << std::endl;
120  app_log() << " trial energy = " << vParam[SBVP::ETRIAL] << std::endl;
121  app_log() << " reference energy = " << vParam[SBVP::EREF] << std::endl;
122  app_log() << " reference variance = " << vParam[SBVP::SIGMA2] << std::endl;
123  app_log() << " Feedback = " << vParam[SBVP::FEEDBACK] << std::endl;
124  app_log() << " target walkers = " << iParam[B_TARGETWALKERS] << std::endl;
125  app_log() << " branching cutoff scheme = " << branching_cutoff_scheme << std::endl;
126  app_log() << " branch cutoff, max = " << vParam[SBVP::BRANCHCUTOFF] << " " << vParam[SBVP::BRANCHMAX]
127  << std::endl;
128  app_log() << " QMC Status (BranchMode) = " << BranchMode << std::endl;
129 
130  return int(round(double(iParam[B_TARGETWALKERS]) / double(nwtot_now)));
131 }
std::ostream & app_log()
Definition: OutputManager.h:65
1 for main, 0 for wamrup
Definition: SFNBranch.h:75
BranchModeType BranchMode
Definition: SFNBranch.h:300
accumulator_set< RealType > R2Accepted
a simple accumulator for energy
Definition: SFNBranch.h:314
void setBranchCutoff(FullPrecRealType variance, FullPrecRealType targetSigma, FullPrecRealType maxSigma, int Nelec=0)
set branch cutoff, max, filter
Definition: SFNBranch.cpp:287
1 for dmc, 0 for anything else
Definition: SFNBranch.h:73
return_type result() const
return the sum
Definition: accumulators.h:108
counter for tracking object state
Definition: SFNBranch.h:104
warmup steps, valid when BranchMode[D_DMCSTAGE] == 0
Definition: SFNBranch.h:102
target total number of walkers per mpi group
Definition: SFNBranch.h:105
std::string branching_cutoff_scheme
scheme of branching cutoff
Definition: SFNBranch.h:322
accumulator_set< RealType > R2Proposed
a simple accumulator for energy
Definition: SFNBranch.h:316
1 to kill walkers when a node crossing is detected
Definition: SFNBranch.h:83
1 for the standard dmc, 0 for the comb method
Definition: SFNBranch.h:77

◆ phaseChanged()

bool phaseChanged ( RealType  psi0) const
inline

Definition at line 161 of file SFNBranch.h.

References qmcplusplus::cos().

Referenced by DMCBatched::advanceWalkers().

162  {
163 // TODO: remove ifdef
164 #if defined(QMC_COMPLEX)
165  return false;
166 #else
167  return std::cos(psi0) < std::numeric_limits<RealType>::epsilon();
168 #endif
169  }
MakeReturn< UnaryNode< FnCos, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t cos(const Vector< T1, C1 > &l)

◆ printStatus()

void printStatus ( ) const

finalize the simulation

Definition at line 231 of file SFNBranch.cpp.

References qmcplusplus::app_log(), SFNBranch::B_COUNTER, SFNBranch::B_RMC, SFNBranch::B_TARGETWALKERS, SFNBranch::BRANCHCUTOFF, SFNBranch::BRANCHMAX, SFNBranch::BranchMode, SFNBranch::EREF, SFNBranch::ETRIAL, SFNBranch::FEEDBACK, SFNBranch::iParam, SFNBranch::SIGMA2, SFNBranch::TAU, SFNBranch::TAUEFF, and SFNBranch::vParam.

232 {
233  std::ostringstream o;
234  //running RMC
235  if (BranchMode[B_RMC])
236  {
237  o << "====================================================";
238  o << "\n End of a RMC section";
239  o << "\n QMC counter = " << iParam[B_COUNTER];
240  o << "\n time step = " << vParam[SBVP::TAU];
241  o << "\n effective time step = " << vParam[SBVP::TAUEFF];
242  o << "\n reference energy = " << vParam[SBVP::EREF];
243  o << "\n reference variance = " << vParam[SBVP::SIGMA2];
244  o << "\n cutoff energy = " << vParam[SBVP::BRANCHCUTOFF] << " " << vParam[SBVP::BRANCHMAX];
245  o << "\n QMC Status (BranchMode) = " << BranchMode;
246  o << "\n====================================================";
247  }
248  else // running DMC
249  {
250  o << "====================================================";
251  o << "\n End of a DMC section";
252  o << "\n QMC counter = " << iParam[B_COUNTER];
253  o << "\n time step = " << vParam[SBVP::TAU];
254  o << "\n effective time step = " << vParam[SBVP::TAUEFF];
255  o << "\n trial energy = " << vParam[SBVP::ETRIAL];
256  o << "\n reference energy = " << vParam[SBVP::EREF];
257  o << "\n reference variance = " << vParam[SBVP::SIGMA2];
258  o << "\n target walkers = " << iParam[B_TARGETWALKERS];
259  o << "\n branch cutoff = " << vParam[SBVP::BRANCHCUTOFF] << " " << vParam[SBVP::BRANCHMAX];
260  o << "\n Feedback = " << vParam[SBVP::FEEDBACK];
261  o << "\n QMC Status (BranchMode) = " << BranchMode;
262  o << "\n====================================================";
263  }
264  app_log() << o.str() << std::endl;
265 }
std::ostream & app_log()
Definition: OutputManager.h:65
BranchModeType BranchMode
Definition: SFNBranch.h:300
1 for rmc, 0 for anything else
Definition: SFNBranch.h:87
counter for tracking object state
Definition: SFNBranch.h:104
target total number of walkers per mpi group
Definition: SFNBranch.h:105

◆ put()

bool put ( xmlNodePtr  cur)

Parse the xml file for parameters.

Parameters
curcurrent xmlNode

Few important parameters are:

  • en_ref: a reference energy
  • num_gen: number of generations $N_G$ to reach equilibrium, used in the feedback parameter $ feed = \frac{1}{N_G \tau} $

Definition at line 277 of file SFNBranch.cpp.

References SFNBranch::B_ENERGYUPDATEINTERVAL, SFNBranch::B_WARMUPSTEPS, SFNBranch::EtrialUpdateToDoSteps, SFNBranch::iParam, SFNBranch::m_param, SFNBranch::myNode, ParameterSet::put(), and SFNBranch::WarmUpToDoSteps.

278 {
279  //save it
280  myNode = cur;
281  m_param.put(cur);
284  return true;
285 }
bool put(std::istream &is) override
read from std::istream
Definition: ParameterSet.h:42
int WarmUpToDoSteps
number of remaning steps in warmup, [0, iParam[B_WARMUPSTEPS]]
Definition: SFNBranch.h:306
xmlNodePtr myNode
save xml element
Definition: SFNBranch.h:310
ParameterSet m_param
set of parameters
Definition: SFNBranch.h:324
int EtrialUpdateToDoSteps
number of remaning steps in before adjusting ETRIAL, [0, iParam[B_ENERGYUPDATEINTERVAL]] ...
Definition: SFNBranch.h:308
warmup steps, valid when BranchMode[D_DMCSTAGE] == 0
Definition: SFNBranch.h:102
frequency of the trial energy updates, default 1
Definition: SFNBranch.h:103

◆ registerParameters()

void registerParameters ( )

create map between the parameter name and variables

Definition at line 68 of file SFNBranch.cpp.

References ParameterSet::add(), SFNBranch::B_BRANCHINTERVAL, SFNBranch::B_ENERGYUPDATEINTERVAL, SFNBranch::B_TARGETWALKERS, SFNBranch::B_WARMUPSTEPS, SFNBranch::branching_cutoff_scheme, SFNBranch::EREF, SFNBranch::FILTERSCALE, SFNBranch::iParam, SFNBranch::m_param, qmcplusplus::MIXDMCOPT, SFNBranch::SIGMA_BOUND, SFNBranch::sParam, SFNBranch::TAU, qmcplusplus::USETAUOPT, and SFNBranch::vParam.

Referenced by SFNBranch::SFNBranch().

69 {
70  m_param.add(iParam[B_WARMUPSTEPS], "warmupSteps");
71  m_param.add(iParam[B_WARMUPSTEPS], "warmupsteps");
72  m_param.add(iParam[B_ENERGYUPDATEINTERVAL], "energyUpdateInterval");
73  m_param.add(iParam[B_BRANCHINTERVAL], "branchInterval");
74  m_param.add(iParam[B_TARGETWALKERS], "targetWalkers");
75  m_param.add(iParam[B_TARGETWALKERS], "targetwalkers");
76  m_param.add(iParam[B_TARGETWALKERS], "target_walkers");
77  //trial energy
78  m_param.add(vParam[SBVP::EREF], "refEnergy");
79  m_param.add(vParam[SBVP::EREF], "ref_energy");
80  m_param.add(vParam[SBVP::EREF], "en_ref");
81  m_param.add(vParam[SBVP::TAU], "tau");
82  m_param.add(vParam[SBVP::TAU], "timestep");
83  m_param.add(vParam[SBVP::TAU], "timeStep");
84  m_param.add(vParam[SBVP::TAU], "TimeStep");
85  //filterscale: sets the filtercutoff to sigma*filterscale
86  m_param.add(vParam[SBVP::FILTERSCALE], "filterscale");
87  m_param.add(vParam[SBVP::SIGMA_BOUND], "sigmaBound");
88  //turn on/off effective tau onl for time-step error comparisons
89  m_param.add(sParam[USETAUOPT], "useBareTau");
90  m_param.add(sParam[MIXDMCOPT], "warmupByReconfiguration");
91  m_param.add(branching_cutoff_scheme, "branching_cutoff_scheme");
92 }
ParameterSet m_param
set of parameters
Definition: SFNBranch.h:324
interval between branch, see population control
Definition: SFNBranch.h:106
void add(PDT &aparam, const std::string &aname_in, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new parameter corresponding to an xmlNode <parameter>
warmup steps, valid when BranchMode[D_DMCSTAGE] == 0
Definition: SFNBranch.h:102
target total number of walkers per mpi group
Definition: SFNBranch.h:105
std::string branching_cutoff_scheme
scheme of branching cutoff
Definition: SFNBranch.h:322
frequency of the trial energy updates, default 1
Definition: SFNBranch.h:103
std::vector< std::string > sParam
string parameters
Definition: SFNBranch.h:326

◆ regressQMCCounter()

void regressQMCCounter ( )
inline

Definition at line 176 of file SFNBranch.h.

References SFNBranch::B_COUNTER, and SFNBranch::iParam.

176 { iParam[B_COUNTER]--; }
counter for tracking object state
Definition: SFNBranch.h:104

◆ setBranchCutoff()

void setBranchCutoff ( FullPrecRealType  variance,
FullPrecRealType  targetSigma,
FullPrecRealType  maxSigma,
int  Nelec = 0 
)
private

set branch cutoff, max, filter

Definition at line 287 of file SFNBranch.cpp.

References APP_ABORT, SFNBranch::BRANCHCUTOFF, SFNBranch::BRANCHFILTER, SFNBranch::branching_cutoff_scheme, SFNBranch::BRANCHMAX, omptarget::min(), qmcplusplus::sqrt(), SFNBranch::TAU, and SFNBranch::vParam.

Referenced by SFNBranch::initParam(), and SFNBranch::updateParamAfterPopControl().

291 {
292  if (branching_cutoff_scheme == "DRV")
293  {
294  // eq.(3), J. Chem. Phys. 89, 3629 (1988).
295  // eq.(9), J. Chem. Phys. 99, 2865 (1993).
297  }
298  else if (branching_cutoff_scheme == "ZSGMA")
299  {
300  // eq.(6), Phys. Rev. B 93, 241118(R) (2016)
301  // do nothing if Nelec is not passed in.
302  if (Nelec > 0)
304  }
305  else if (branching_cutoff_scheme == "YL")
306  {
307  // a scheme from Ye Luo.
308  vParam[SBVP::BRANCHCUTOFF] = std::sqrt(variance) * std::min(targetSigma, std::sqrt(1.0 / vParam[SBVP::TAU]));
309  }
310  else if (branching_cutoff_scheme == "classic")
311  {
312  // default QMCPACK choice which is the same as v3.0.0 and before.
313  vParam[SBVP::BRANCHCUTOFF] = std::min(std::max(variance * targetSigma, maxSigma), 2.5 / vParam[SBVP::TAU]);
314  }
315  else
316  APP_ABORT("SFNBranch::setBranchCutoff unknown branching cutoff scheme " + branching_cutoff_scheme);
317 
320 }
T min(T a, T b)
#define APP_ABORT(msg)
Widely used but deprecated fatal error macros from legacy code.
Definition: AppAbort.h:27
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
std::string branching_cutoff_scheme
scheme of branching cutoff
Definition: SFNBranch.h:322

◆ symLinkAction()

RealType symLinkAction ( RealType  logGf,
RealType  logGb,
RealType  enew,
RealType  eold 
) const
inline

Definition at line 210 of file SFNBranch.h.

References SFNBranch::BRANCHCUTOFF, SFNBranch::BRANCHFILTER, SFNBranch::BRANCHMAX, SFNBranch::EREF, SFNBranch::TAUEFF, and SFNBranch::vParam.

211  {
212  RealType driftaction = -0.5 * (logGf + logGb);
213  //RealType energyaction =
214  RealType taueff_ = vParam[SBVP::TAUEFF] * 0.5;
215  RealType x = std::max(vParam[SBVP::EREF] - enew, vParam[SBVP::EREF] - eold);
216  if (x > vParam[SBVP::BRANCHMAX])
217  taueff_ = 0.0;
218  else if (x > vParam[SBVP::BRANCHCUTOFF])
219  taueff_ *= (1.0 - (x - vParam[SBVP::BRANCHCUTOFF]) * vParam[SBVP::BRANCHFILTER]);
220  RealType energyaction = taueff_ * (enew + eold);
221  return driftaction + energyaction;
222  }
QMCTraits::RealType RealType

◆ symLinkActionBare()

RealType symLinkActionBare ( RealType  logGf,
RealType  logGb,
RealType  enew,
RealType  eold 
) const
inline

Definition at line 224 of file SFNBranch.h.

References SFNBranch::TAUEFF, and SFNBranch::vParam.

225  {
226  RealType driftaction = -0.5 * (logGf + logGb);
227  RealType taueff_ = vParam[SBVP::TAUEFF] * 0.5;
228  RealType energyaction = taueff_ * (enew + eold);
229  // RealType wavefunctionaction= -psinew + psiold;
230  return driftaction + energyaction;
231  }
QMCTraits::RealType RealType

◆ updateParamAfterPopControl()

void updateParamAfterPopControl ( const MCDataType< FullPrecRealType > &  wc_ensemble_prop,
int  Nelec 
)

perform branching

Parameters
itercurrent step
wWalker configuration

FIXME vParam[SBVP::ETRIAL] = vParam[SBVP::EREF];

FIXME vParam[SBVP::ETRIAL] = vParam[SBVP::ENOW];

Definition at line 133 of file SFNBranch.cpp.

References qmcplusplus::app_log(), SFNBranch::B_DMCSTAGE, SFNBranch::B_ENERGYUPDATEINTERVAL, SFNBranch::B_KILLNODES, SFNBranch::B_POPCONTROL, SFNBranch::B_TARGETWALKERS, SFNBranch::B_USETAUEFF, SFNBranch::B_WARMUPSTEPS, SFNBranch::BRANCHCUTOFF, SFNBranch::BRANCHMAX, SFNBranch::BranchMode, DMCRefEnergy::count(), MCDataType< T >::Energy, SFNBranch::ENOW, SFNBranch::EREF, SFNBranch::ETRIAL, SFNBranch::EtrialUpdateToDoSteps, SFNBranch::FEEDBACK, DMCRefEnergy::getEnergyVariance(), SFNBranch::iParam, MCDataType< T >::LivingFraction, qmcplusplus::log(), qmcplusplus::MIXDMCOPT, DMCRefEnergy::pushWeightEnergyVariance(), MCDataType< T >::R2Accepted, SFNBranch::R2Accepted, MCDataType< T >::R2Proposed, SFNBranch::R2Proposed, SFNBranch::ref_energy_collector, accumulator_set< T, typename >::result(), SFNBranch::setBranchCutoff(), SFNBranch::SIGMA2, SFNBranch::SIGMA_BOUND, SFNBranch::sParam, SFNBranch::TAU, SFNBranch::TAUEFF, MCDataType< T >::Variance, SFNBranch::vParam, SFNBranch::WarmUpToDoSteps, and MCDataType< T >::Weight.

134 {
135  //target weight
136  const auto logN = std::log(static_cast<FullPrecRealType>(iParam[B_TARGETWALKERS]));
137  //population weight before branching
138  const FullPrecRealType pop_weight = wc_ensemble_prop.Weight;
139  //current energy
140  vParam[SBVP::ENOW] = wc_ensemble_prop.Energy;
141 
142  R2Accepted(wc_ensemble_prop.R2Accepted);
143  R2Proposed(wc_ensemble_prop.R2Proposed);
144  if (BranchMode[B_USETAUEFF])
146 
147  if (BranchMode[B_DMCSTAGE]) // main stage after warmup
148  {
149  if (WarmUpToDoSteps != 0)
150  throw UniformCommunicateError("Bug: WarmUpToDoSteps should be 0 after warmup.");
151 
152  // assuming ENOW only fluctuates around the mean (EREF) once warmup completes.
153  const auto ene = BranchMode[B_KILLNODES]
154  ? vParam[SBVP::ENOW] - std::log(wc_ensemble_prop.LivingFraction) / vParam[SBVP::TAUEFF]
155  : vParam[SBVP::ENOW];
156  ref_energy_collector.pushWeightEnergyVariance(wc_ensemble_prop.Weight, ene, wc_ensemble_prop.Variance);
157  // update the reference energy
158  auto [ene_avg, var_avg] = ref_energy_collector.getEnergyVariance();
159  vParam[SBVP::EREF] = ene_avg;
160 
161  // update Etrial based on EREF
163  {
165  if (EtrialUpdateToDoSteps == 0)
166  {
167  vParam[SBVP::ETRIAL] = vParam[SBVP::EREF] + vParam[SBVP::FEEDBACK] * (logN - std::log(pop_weight));
169  }
170  }
171  else
172  {
173  throw UniformCommunicateError("Bug: FIXME SBVP::EREF should be calculated based on weights");
174  /// FIXME vParam[SBVP::ETRIAL] = vParam[SBVP::EREF];
175  }
176  }
177  else //warmup
178  {
179  if (WarmUpToDoSteps == 0)
180  throw UniformCommunicateError("Bug: WarmUpToDoSteps should be larger than 0 during warmup.");
181 
182  // Use Enow as the best estimate of ground state energy during warmup.
184  // update Etrial based on Enow as Enow is not yet converged in warmup stage
186  {
187  if (BranchMode[B_KILLNODES])
188  vParam[SBVP::ETRIAL] = (0.00 * vParam[SBVP::EREF] + 1.0 * vParam[SBVP::ENOW]) +
189  vParam[SBVP::FEEDBACK] * (logN - std::log(pop_weight)) -
190  std::log(wc_ensemble_prop.LivingFraction) / vParam[SBVP::TAU];
191  else
192  vParam[SBVP::ETRIAL] = vParam[SBVP::ENOW] + (logN - std::log(pop_weight)) / vParam[SBVP::TAU];
193  }
194  else
195  {
196  throw UniformCommunicateError("Bug: FIXME SBVP::EREF should be calculated based on weights");
197  /// FIXME vParam[SBVP::ETRIAL] = vParam[SBVP::ENOW];
198  }
199 
200  --WarmUpToDoSteps;
201  if (WarmUpToDoSteps == 0) //warmup is done
202  {
204  throw UniformCommunicateError("Bug: ref_energy_collector should not have been used during warmup.");
205 
206  vParam[SBVP::SIGMA2] = wc_ensemble_prop.Variance;
208  app_log() << "\n Warmup is completed after " << iParam[B_WARMUPSTEPS] << std::endl;
209  if (BranchMode[B_USETAUEFF])
210  app_log() << "\n TauEff = " << vParam[SBVP::TAUEFF]
211  << "\n TauEff/Tau = " << vParam[SBVP::TAUEFF] / vParam[SBVP::TAU];
212  else
213  app_log() << "\n TauEff proposed = " << vParam[SBVP::TAUEFF] * R2Accepted.result() / R2Proposed.result();
214  app_log() << "\n Etrial = " << vParam[SBVP::ETRIAL] << std::endl;
215  app_log() << " Population average of energy = " << vParam[SBVP::ENOW] << std::endl;
216  app_log() << " Variance = " << vParam[SBVP::SIGMA2] << std::endl;
217  app_log() << "branch cutoff = " << vParam[SBVP::BRANCHCUTOFF] << " " << vParam[SBVP::BRANCHMAX] << std::endl;
218 
219  BranchMode.set(B_DMCSTAGE, 1); //set BranchModex to main stage
220  if (sParam[MIXDMCOPT] == "yes")
221  {
222  app_log() << "Switching to DMC with fluctuating populations" << std::endl;
223  BranchMode.set(B_POPCONTROL, 1); //use standard DMC
225  app_log() << " Etrial = " << vParam[SBVP::ETRIAL] << std::endl;
226  }
227  }
228  }
229 }
std::ostream & app_log()
Definition: OutputManager.h:65
std::tuple< FullPrecReal, FullPrecReal > getEnergyVariance() const
return energy and variance
1 for main, 0 for wamrup
Definition: SFNBranch.h:75
int WarmUpToDoSteps
number of remaning steps in warmup, [0, iParam[B_WARMUPSTEPS]]
Definition: SFNBranch.h:306
BranchModeType BranchMode
Definition: SFNBranch.h:300
DMCRefEnergy ref_energy_collector
collect energy and variance history
Definition: SFNBranch.h:312
accumulator_set< RealType > R2Accepted
a simple accumulator for energy
Definition: SFNBranch.h:314
void setBranchCutoff(FullPrecRealType variance, FullPrecRealType targetSigma, FullPrecRealType maxSigma, int Nelec=0)
set branch cutoff, max, filter
Definition: SFNBranch.cpp:287
MakeReturn< UnaryNode< FnLog, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t log(const Vector< T1, C1 > &l)
return_type result() const
return the sum
Definition: accumulators.h:108
int EtrialUpdateToDoSteps
number of remaning steps in before adjusting ETRIAL, [0, iParam[B_ENERGYUPDATEINTERVAL]] ...
Definition: SFNBranch.h:308
QTFull::RealType FullPrecRealType
Definition: Configuration.h:66
1 to use taueff accordning to JCP 93, 0 to use tau
Definition: SFNBranch.h:79
warmup steps, valid when BranchMode[D_DMCSTAGE] == 0
Definition: SFNBranch.h:102
target total number of walkers per mpi group
Definition: SFNBranch.h:105
frequency of the trial energy updates, default 1
Definition: SFNBranch.h:103
accumulator_set< RealType > R2Proposed
a simple accumulator for energy
Definition: SFNBranch.h:316
1 to kill walkers when a node crossing is detected
Definition: SFNBranch.h:83
void pushWeightEnergyVariance(FullPrecReal weight, FullPrecReal ene, FullPrecReal var)
record weight, energy and variance.
size_t count() const
return record count.
1 for the standard dmc, 0 for the comb method
Definition: SFNBranch.h:77
std::vector< std::string > sParam
string parameters
Definition: SFNBranch.h:326

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
SFNBranch::VParamType rhs 
)
friend

Definition at line 322 of file SFNBranch.cpp.

323 {
324  for (auto value : rhs)
325  os << std::setw(18) << std::setprecision(10) << value;
326  return os;
327 }

Member Data Documentation

◆ branching_cutoff_scheme

std::string branching_cutoff_scheme
private

scheme of branching cutoff

Definition at line 322 of file SFNBranch.h.

Referenced by SFNBranch::initParam(), SFNBranch::registerParameters(), SFNBranch::setBranchCutoff(), and SFNBranch::SFNBranch().

◆ BranchMode

◆ EtrialUpdateToDoSteps

int EtrialUpdateToDoSteps
private

number of remaning steps in before adjusting ETRIAL, [0, iParam[B_ENERGYUPDATEINTERVAL]]

Definition at line 308 of file SFNBranch.h.

Referenced by SFNBranch::put(), and SFNBranch::updateParamAfterPopControl().

◆ iParam

◆ m_param

ParameterSet m_param
private

set of parameters

Definition at line 324 of file SFNBranch.h.

Referenced by SFNBranch::put(), and SFNBranch::registerParameters().

◆ myNode

xmlNodePtr myNode
private

save xml element

Definition at line 310 of file SFNBranch.h.

Referenced by SFNBranch::put().

◆ R2Accepted

accumulator_set<RealType> R2Accepted
private

a simple accumulator for energy

Definition at line 314 of file SFNBranch.h.

Referenced by SFNBranch::initParam(), SFNBranch::SFNBranch(), and SFNBranch::updateParamAfterPopControl().

◆ R2Center

accumulator_set<RealType> R2Center
private

a simple accumulator for reptation's center slice

Definition at line 318 of file SFNBranch.h.

◆ R2Proposed

accumulator_set<RealType> R2Proposed
private

a simple accumulator for energy

Definition at line 316 of file SFNBranch.h.

Referenced by SFNBranch::initParam(), SFNBranch::SFNBranch(), and SFNBranch::updateParamAfterPopControl().

◆ ref_energy_collector

DMCRefEnergy ref_energy_collector
private

collect energy and variance history

Definition at line 312 of file SFNBranch.h.

Referenced by SFNBranch::updateParamAfterPopControl().

◆ sParam

std::vector<std::string> sParam
private

string parameters

Definition at line 326 of file SFNBranch.h.

Referenced by SFNBranch::registerParameters(), SFNBranch::SFNBranch(), and SFNBranch::updateParamAfterPopControl().

◆ vParam

◆ WarmUpToDoSteps

int WarmUpToDoSteps
private

number of remaning steps in warmup, [0, iParam[B_WARMUPSTEPS]]

Definition at line 306 of file SFNBranch.h.

Referenced by SFNBranch::getWarmupToDoSteps(), SFNBranch::put(), and SFNBranch::updateParamAfterPopControl().


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