@@ -356,7 +356,15 @@ void SNES::compute(Parameters& para, Fitness* fitness_function)
356356
357357 update_mu_and_sigma (para);
358358 if (0 == (n + 1 ) % 100 ) {
359- output_mu_and_sigma (para);
359+ const char * filename = " nep.restart" ;
360+ output_mu_and_sigma (para, filename);
361+ }
362+ // Optionally save the nep.restart file at the same time as save_potential
363+ if (0 == (n + 1 ) % para.save_potential ) {
364+ std::string restart_file;
365+ fitness_function->get_save_potential_label (para, n, restart_file);
366+ restart_file += " .restart" ;
367+ output_mu_and_sigma (para, restart_file.c_str ());
360368 }
361369 }
362370 } else {
@@ -642,12 +650,12 @@ void SNES::update_mu_and_sigma(Parameters& para)
642650 GPU_CHECK_KERNEL;
643651}
644652
645- void SNES::output_mu_and_sigma (Parameters& para)
653+ void SNES::output_mu_and_sigma (Parameters& para, const char * filename )
646654{
647655 gpuSetDevice (0 ); // normally use GPU-0
648656 gpu_mu.copy_to_host (mu.data ());
649657 gpu_sigma.copy_to_host (sigma.data ());
650- FILE* fid_restart = my_fopen (" nep.restart " , " w" );
658+ FILE* fid_restart = my_fopen (filename , " w" );
651659 for (int n = 0 ; n < number_of_variables; ++n) {
652660 fprintf (fid_restart, " %15.7e %15.7e\n " , mu[n], sigma[n]);
653661 }
0 commit comments