Skip to content

Commit d0fc696

Browse files
authored
Fix write of Hamiltonian dimension value to Amber netcdf trajectory (#1164)
* Add missing Hamiltonian dimension values write. Warn if remd values dimension write is unhandled * Add missing hamiltonian remd write in parallel * V6.31.0. Minor version bump for fixed MREMD Hamiltonian value write. Adds warnings when remd values are unhandled
1 parent 9f9db60 commit d0fc696

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/NetcdfFile.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,8 @@ int NetcdfFile::ReadRemdValues(Frame& frm) {
599599
} else if (remValType_.DimType(idx) == ReplicaDimArray::REDOX) {
600600
frm.SetRedOx( RemdValues_[idx] );
601601
//mprintf("DEBUG: RedOx= %g\n", frm.RedOx());
602-
}
602+
} else
603+
mprinterr("Internal Error: NetcdfFile::ReadRemdValues(): Unhandled remd value read for dim %i (%s)\n", idx, ReplicaDimArray::dimType(remValType_.DimType(idx)));
603604
}
604605
}
605606
return 0;
@@ -1632,13 +1633,16 @@ int NetcdfFile::WriteRemdValues(Frame const& frm) {
16321633
if (remValType_.DimType(idx) == ReplicaDimArray::TEMPERATURE) {
16331634
RemdValues_[idx] = frm.Temperature();
16341635
//mprintf("DEBUG: T= %g\n", frm.Temperature());
1636+
} else if (remValType_.DimType(idx) == ReplicaDimArray::HAMILTONIAN) {
1637+
RemdValues_[idx] = (double)(frm.RemdIndices()[idx]);
16351638
} else if (remValType_.DimType(idx) == ReplicaDimArray::PH) {
16361639
RemdValues_[idx] = frm.pH();
16371640
//mprintf("DEBUG: pH= %g\n", frm.pH());
16381641
} else if (remValType_.DimType(idx) == ReplicaDimArray::REDOX) {
16391642
RemdValues_[idx] = frm.RedOx();
16401643
//mprintf("DEBUG: RedOx= %g\n", frm.RedOx());
1641-
}
1644+
} else
1645+
mprinterr("Internal Error: NetcdfFile::WriteRemdValues(): Unhandled remd value write for dim %i (%s)\n", idx, ReplicaDimArray::dimType(remValType_.DimType(idx)));
16421646
}
16431647
count_[1] = remd_dimension_; // # dimensions
16441648
if ( NC::CheckErr(nc_put_vara_double(ncid_, RemdValuesVID_, start_, count_, &RemdValues_[0])) )
@@ -1670,13 +1674,17 @@ int NetcdfFile::parallelWriteRemdValues(int set, Frame const& frm) {
16701674
if (remValType_.DimType(idx) == ReplicaDimArray::TEMPERATURE) {
16711675
RemdValues_[idx] = frm.Temperature();
16721676
//mprintf("DEBUG: T= %g\n", frm.Temperature());
1677+
} else if (remValType_.DimType(idx) == ReplicaDimArray::HAMILTONIAN) {
1678+
RemdValues_[idx] = (double)(frm.RemdIndices()[idx]);
16731679
} else if (remValType_.DimType(idx) == ReplicaDimArray::PH) {
16741680
RemdValues_[idx] = frm.pH();
16751681
//mprintf("DEBUG: pH= %g\n", frm.pH());
16761682
} else if (remValType_.DimType(idx) == ReplicaDimArray::REDOX) {
16771683
RemdValues_[idx] = frm.RedOx();
16781684
//mprintf("DEBUG: RedOx= %g\n", frm.RedOx());
1679-
}
1685+
} else
1686+
rprinterr("Internal Error: NetcdfFile::WriteRemdValues(): Unhandled remd value write for dim %i (%s)\n", idx, ReplicaDimArray::dimType(remValType_.DimType(idx)));
1687+
16801688
}
16811689
pcount_[1] = remd_dimension_; // # dimensions
16821690
if ( NC::CheckErr(ncmpi_put_vara_double(ncid_, RemdValuesVID_, pstart_, pcount_, &RemdValues_[0])) )

src/Version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* Whenever a number that precedes <revision> is incremented, all subsequent
1313
* numbers should be reset to 0.
1414
*/
15-
#define CPPTRAJ_INTERNAL_VERSION "V6.30.1"
15+
#define CPPTRAJ_INTERNAL_VERSION "V6.31.0"
1616
/// PYTRAJ relies on this
1717
#define CPPTRAJ_VERSION_STRING CPPTRAJ_INTERNAL_VERSION
1818
#endif

0 commit comments

Comments
 (0)