@@ -151,54 +151,59 @@ namespace CASM {
151151 }
152152 m_log << std::endl;
153153
154- // save initial configdof if not dependent runs
155- ConfigDoF initial_configdof;
156- if (!m_settings.dependent_runs ()) {
157- initial_configdof = m_mc.configdof ();
158- }
154+ if (m_settings.dependent_runs ()) {
159155
160- // if starting from initial condition
161- if (start_i == 0 ) {
162- // perform any requested explicit equilibration passes
163- if (m_settings.is_equilibration_passes_first_run ()) {
164- auto equil_passes = m_settings.equilibration_passes_first_run ();
156+ // if starting from initial condition
157+ if (start_i == 0 ) {
165158
166- m_log. write ( " DoF " );
167- m_log << " write: " << m_dir. initial_state_firstruneq_json ( 0 ) << " \n " << std::endl ;
159+ // set intial state
160+ m_mc. set_state (m_conditions_list[ 0 ], m_settings) ;
168161
169- jsonParser json;
170- fs::create_directories (m_dir.conditions_dir (0 ));
171- to_json (m_mc.configdof (), json).write (m_dir.initial_state_firstruneq_json (0 ));
162+ // perform any requested explicit equilibration passes
163+ if (m_settings.dependent_runs () && m_settings.is_equilibration_passes_first_run ()) {
172164
173- m_log.begin (" Equilibration passes" );
174- m_log << equil_passes << " equilibration passes\n " << std::endl;
165+ auto equil_passes = m_settings.equilibration_passes_first_run ();
175166
176- MonteCounter equil_counter (m_settings, m_mc.steps_per_pass ());
177- while (equil_counter.pass () != equil_passes) {
178- monte_carlo_step (m_mc);
179- equil_counter++;
180- }
167+ m_log.write (" DoF" );
168+ m_log << " write: " << m_dir.initial_state_firstruneq_json (0 ) << " \n " << std::endl;
169+
170+ jsonParser json;
171+ fs::create_directories (m_dir.conditions_dir (0 ));
172+ to_json (m_mc.configdof (), json).write (m_dir.initial_state_firstruneq_json (0 ));
181173
174+ m_log.begin (" Equilibration passes" );
175+ m_log << equil_passes << " equilibration passes\n " << std::endl;
176+
177+ MonteCounter equil_counter (m_settings, m_mc.steps_per_pass ());
178+ while (equil_counter.pass () != equil_passes) {
179+ monte_carlo_step (m_mc);
180+ equil_counter++;
181+ }
182+ }
182183 }
183- }
184- else if (m_settings. dependent_runs ()) {
185- // read end state of previous condition
186- ConfigDoF configdof = m_mc.configdof ();
187- from_json (configdof, jsonParser (m_dir.final_state_json (start_i - 1 )));
184+ else {
185+
186+ // read end state of previous condition
187+ ConfigDoF configdof = m_mc.configdof ();
188+ from_json (configdof, jsonParser (m_dir.final_state_json (start_i - 1 )));
188189
189- m_mc.set_configdof (configdof, std::string (" Using: " ) + m_dir.final_state_json (start_i - 1 ).string ());
190+ m_mc.set_configdof (configdof, std::string (" Using: " ) + m_dir.final_state_json (start_i - 1 ).string ());
191+ }
190192 }
191193
192194 // Run for all conditions, outputting data as you finish each one
193195 for (Index i = start_i; i < m_conditions_list.size (); i++) {
194196 if (!m_settings.dependent_runs ()) {
195- m_mc.set_configdof (initial_configdof, " reset to initial DoF " );
197+ m_mc.set_state (m_conditions_list[i], m_settings );
196198 }
197199 else {
200+ m_mc.set_conditions (m_conditions_list[i]);
201+
198202 m_log.custom (" Continue with existing DoF" );
199203 m_log << std::endl;
200204 }
201205 single_run (i);
206+ m_log << std::endl;
202207 }
203208
204209 return ;
@@ -293,8 +298,6 @@ namespace CASM {
293298
294299 fs::create_directories (m_dir.conditions_dir (cond_index));
295300
296- m_mc.set_conditions (m_conditions_list[cond_index]);
297-
298301 // perform any requested explicit equilibration passes
299302 if (m_settings.is_equilibration_passes_each_run ()) {
300303
@@ -335,7 +338,7 @@ namespace CASM {
335338 while (true ) {
336339
337340 if (debug ()) {
338- m_log.custom (" Counter info" );
341+ m_log.custom <Log::debug> (" Counter info" );
339342 m_log << " pass: " << run_counter.pass () << " "
340343 << " step: " << run_counter.step () << " "
341344 << " samples: " << run_counter.samples () << " \n " << std::endl;
@@ -356,12 +359,12 @@ namespace CASM {
356359 else {
357360
358361 if (m_mc.check_convergence_time ()) {
359-
360- m_log.check <Log::verbose>(" Convergence " ) ;
361- m_log << std::boolalpha ;
362- m_log << " is equilibrated : " << m_mc.is_equilibrated ().first << std::endl;
363- m_log << " is converged: " << m_mc. is_converged () << std::endl;
364-
362+
363+ m_log.require <Log::verbose>() << " \n " ;
364+ m_log. custom <Log::verbose>( " Begin convergence checks " ) ;
365+ m_log << " samples : " << m_mc.sample_times ().size () << std::endl;
366+ m_log << std::endl;
367+
365368 if (m_mc.is_converged ()) {
366369 break ;
367370 }
@@ -386,7 +389,7 @@ namespace CASM {
386389 run_counter++;
387390
388391 if (run_counter.sample_time ()) {
389- m_log.custom <Log::verbose >(" Sample data" );
392+ m_log.custom <Log::debug >(" Sample data" );
390393 m_log << " pass: " << run_counter.pass () << " "
391394 << " step: " << run_counter.step () << " "
392395 << " take sample " << m_mc.sample_times ().size () << " \n " << std::endl;
0 commit comments