diff --git a/src/colvar/ContactMap.cpp b/src/colvar/ContactMap.cpp index d76067209ef4c24b83007bb1bf75ded47699c62b..4cb1c84b930035335542f7bc41fa7abba5bdace9 100644 --- a/src/colvar/ContactMap.cpp +++ b/src/colvar/ContactMap.cpp @@ -199,10 +199,10 @@ docmdist(false) std::string num; Tools::convert(nswitch+1, num); error("missing SWITCH" + num + " keyword"); } + // Read in reference values nswitch=0; - reference.resize( ga_lista.size() ); - for(unsigned i=0;i<ga_lista.size();++i) reference[i]=0.; + reference.resize(ga_lista.size(), 0.); for(unsigned i=0;i<ga_lista.size();++i){ if( !parseNumbered( "REFERENCE", i+1, reference[i] ) ) break; nswitch++; @@ -211,14 +211,14 @@ docmdist(false) parse("REFERENCE",reference[0]); for(unsigned i=1;i<ga_lista.size();++i){ reference[i]=reference[0]; + nswitch++; } - nswitch = ga_lista.size(); } - if ( nswitch != ga_lista.size() ) error("missing REFERENCE keyword"); + if(nswitch == 0 && docmdist) error("with CMDIST one must use REFERENCE to setup the reference contact map"); + // Read in weight values nswitch=0; - weight.resize( ga_lista.size() ); - for(unsigned i=0;i<ga_lista.size();++i) weight[i]=1.; + weight.resize(ga_lista.size(), 1.0); for(unsigned i=0;i<ga_lista.size();++i){ if( !parseNumbered( "WEIGHT", i+1, weight[i] ) ) break; nswitch++; @@ -230,7 +230,6 @@ docmdist(false) } nswitch = ga_lista.size(); } - if ( nswitch != ga_lista.size() ) error("missing WEIGHT keyword"); // Ouput details of all contacts for(unsigned i=0;i<sfs.size();++i){