void CoeffsBase::writeCoeffsInfoToFile(OFile& ofile) const { ofile.addConstantField(field_type_).printField(field_type_,getTypeStr()); ofile.addConstantField(field_ndimensions_).printField(field_ndimensions_,(int) numberOfDimensions()); ofile.addConstantField(field_ncoeffs_total_).printField(field_ncoeffs_total_,(int) numberOfCoeffs()); for(unsigned int k=0; k<numberOfDimensions(); k++) { ofile.addConstantField(field_shape_prefix_+getDimensionLabel(k)); ofile.printField(field_shape_prefix_+getDimensionLabel(k),(int) shapeOfIndices(k)); } }
void MetaD::writeGaussian(const Gaussian& hill, OFile&file){ unsigned ncv=getNumberOfArguments(); file.printField("time",getTimeStep()*getStep()); for(unsigned i=0;i<ncv;++i){ file.printField(getPntrToArgument(i),hill.center[i]); } if(hill.multivariate){ hillsOfile_.printField("multivariate","true"); Matrix<double> mymatrix(ncv,ncv); unsigned k=0; for(unsigned i=0;i<ncv;i++){ for(unsigned j=i;j<ncv;j++){ mymatrix(i,j)=mymatrix(j,i)=hill.sigma[k]; // recompose the full inverse matrix k++; } } // invert it Matrix<double> invmatrix(ncv,ncv); Invert(mymatrix,invmatrix); // enforce symmetry for(unsigned i=0;i<ncv;i++){ for(unsigned j=i;j<ncv;j++){ invmatrix(i,j)=invmatrix(j,i); } } // do cholesky so to have a "sigma like" number Matrix<double> lower(ncv,ncv); cholesky(invmatrix,lower); // now this , in band form , is similar to the sigmas // loop in band form for (unsigned i=0;i<ncv;i++){ for (unsigned j=0;j<ncv-i;j++){ file.printField("sigma_"+getPntrToArgument(j+i)->getName()+"_"+getPntrToArgument(j)->getName(),lower(j+i,j)); } } } else { hillsOfile_.printField("multivariate","false"); for(unsigned i=0;i<ncv;++i) file.printField("sigma_"+getPntrToArgument(i)->getName(),hill.sigma[i]); } double height=hill.height; if(welltemp_){height*=biasf_/(biasf_-1.0);} file.printField("height",height).printField("biasf",biasf_); if(mw_n_>1) file.printField("clock",int(time(0))); file.printField(); }
void MaxEnt::WriteLagrangians(vector<double> &lagmult,OFile &file) { if(printFirstStep) { unsigned ncv=getNumberOfArguments(); file.printField("time",getTimeStep()*getStep()); for(unsigned i=0; i<ncv; ++i) file.printField(getPntrToArgument(i)->getName()+"_coupling",lagmult[i]); file.printField(); } else { if(!isFirstStep) { unsigned ncv=getNumberOfArguments(); file.printField("time",getTimeStep()*getStep()); for(unsigned i=0; i<ncv; ++i) file.printField(getPntrToArgument(i)->getName()+"_coupling",lagmult[i]); file.printField(); } } }