NAMD
Functions
common.C File Reference
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <ctype.h>
#include "common.h"
#include "Node.h"
#include "SimParameters.h"
#include "InfoStream.h"
#include "charm++.h"

Go to the source code of this file.

Functions

const char * NAMD_version_string ()
 
void NAMD_version (int *major, int *minor, int *patchLevel, int *releaseType)
 
int NAMD_gcd (int a, int b)
 
char * NAMD_stringdup (const char *s)
 
void NAMD_quit (const char *err_msg)
 
void NAMD_die (const char *err_msg)
 
void NAMD_err (const char *err_msg)
 
void NAMD_bug (const char *err_msg)
 
int NAMD_file_exists (const char *filename)
 
void NAMD_backup_file (const char *filename, const char *extension)
 
int NAMD_open_text (const char *fname, int append)
 
void NAMD_write (int fd, const char *buf, size_t count, const char *fname)
 
void NAMD_close (int fd, const char *fname)
 
FILE * Fopen (const char *filename, const char *mode)
 
int Fclose (FILE *fout)
 

Function Documentation

◆ Fclose()

int Fclose ( FILE *  fout)

Definition at line 436 of file common.C.

Referenced by ConfigList::ConfigList(), Ambertoppar::genclose(), PDB::PDB(), read_binary_file(), and Parameters::read_parameter_file().

437 {
438  int rc = -1;
439 #if !defined(NOCOMPRESSED)
440  rc = pclose(fout);
441 #endif
442  if (rc == -1) // stream not associated with a popen()
443  {
444  rc = fclose(fout);
445  }
446  return rc;
447 } /* Fclose() */

◆ Fopen()

FILE* Fopen ( const char *  filename,
const char *  mode 
)

Definition at line 342 of file common.C.

References endi(), and iout.

Referenced by ConfigList::ConfigList(), Ambertoppar::genopen(), GridforceFullMainGrid::initialize(), PDB::PDB(), read_binary_file(), and Parameters::read_parameter_file().

343 {
344  struct stat buf;
345  // check if basic filename exists (and not a directory)
346 
347 #if defined(NOCOMPRESSED)
348  if (!stat(filename,&buf))
349  {
350  FILE *rval;
351  while ( ! (rval = fopen(filename,mode)) ) {
352  if ( errno != EINTR ) break;
353  }
354  return(rval);
355  }
356 #else
357  if (!stat(filename,&buf))
358  {
359  if (!S_ISDIR(buf.st_mode)) {
360  FILE *rval;
361  while ( ! (rval = fopen(filename,mode)) ) {
362  if ( errno != EINTR ) break;
363  }
364  return(rval);
365  }
366  }
367  // check for a compressed file
368  char *realfilename;
369  char *command;
370  FILE *fout;
371  command = (char *)malloc(strlen(filename)+25);
372  // check for .Z (unix compress)
373  sprintf(command,"zcat %s.Z",filename);
374  realfilename = command+5;
375  iout << "Command = " << command << "\n" << endi;
376  iout << "Filename.Z = " << realfilename << "\n" << endi;
377  if (!stat(realfilename,&buf))
378  {
379  if (!S_ISDIR(buf.st_mode))
380  {
381  fout = popen(command,mode);
382  // on HP-UX, the first character(s) out of pipe may be
383  // garbage! (Argh!)
384  int C;
385  do
386  {
387  C = fgetc(fout);
388  // iout << "C is " << C << "\n" << endi;
389  if (isalnum(C) || isspace(C))
390  {
391  ungetc(C,fout);
392  C = -1; // outta loop
393  }
394  } while(C != -1);
395  free(command);
396  return(fout);
397  }
398  }
399  // check for .gz (gzip)
400  sprintf(command,"gzip -d -c %s.gz",filename);
401  realfilename = command+11;
402  iout << "Command = " << command << "\n" << endi;
403  iout << "Filename.gz = " << realfilename << "\n" << endi;
404  if (!stat(realfilename,&buf))
405  {
406  if (!S_ISDIR(buf.st_mode))
407  {
408  fout = popen(command,mode);
409  // on HP-UX, the first character(s) out of pipe may be
410  // garbage! (Argh!)
411  int C;
412  do
413  {
414  C = fgetc(fout);
415  // iout << "C is " << C << "\n" << endi;
416  if (isalnum(C) || isspace(C))
417  {
418  ungetc(C,fout);
419  C = -1; // outta loop
420  }
421  } while(C != -1);
422  free(command);
423  return(fout);
424  }
425  }
426  free(command);
427 #endif /* !defined(NOCOMPRESSED) */
428 
429  return(NULL);
430 } /* Fopen() */
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
#define iout
Definition: InfoStream.h:51

◆ NAMD_backup_file()

void NAMD_backup_file ( const char *  filename,
const char *  extension 
)

Definition at line 236 of file common.C.

References endi(), iERROR(), iout, and NAMD_file_exists().

Referenced by Controller::adaptTempInit(), colvarproxy_namd::backup_file(), ofstream_namd::open(), open_dcd_write(), Controller::outputExtendedSystem(), Controller::outputFepEnergy(), Controller::outputTiEnergy(), CollectionMaster::receiveDataStream(), and Controller::write_accelMDG_rest_file().

237 {
238  if (NAMD_file_exists(filename)) {
239  if ( ! extension ) extension = ".BAK";
240  char *backup = new char[strlen(filename)+strlen(extension)+1];
241  strcpy(backup, filename);
242  strcat(backup, extension);
243 #if defined(WIN32) && !defined(__CYGWIN__)
244  if ( remove(backup) ) if ( errno != ENOENT ) {
245  char *sys_err_msg = strerror(errno);
246  if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
247  iout << iERROR << "Error on removing file "
248  << backup << ": " << sys_err_msg << "\n" << endi;
249  fflush(stdout);
250  }
251 #endif
252  while ( rename(filename,backup) )
253  {
254  if ( errno == EINTR ) continue;
255  const char *sys_err_msg = strerror(errno);
256  if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
257  iout << iERROR << "Error on renaming file " << filename
258  << " to " << backup << ": " << sys_err_msg << "\n" << endi;
259  fflush(stdout);
260  if ( errno == EXDEV ) continue;
261  break;
262  // char errmsg[256];
263  // sprintf(errmsg, "Error on renaming file %s to %s",filename,backup);
264  // NAMD_err(errmsg);
265  }
266  delete [] backup;
267  }
268 }
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
int NAMD_file_exists(const char *filename)
Definition: common.C:220
#define iout
Definition: InfoStream.h:51
std::ostream & iERROR(std::ostream &s)
Definition: InfoStream.C:83

◆ NAMD_bug()

void NAMD_bug ( const char *  err_msg)

Definition at line 196 of file common.C.

References Node::Object().

Referenced by Sequencer::algorithm(), Controller::algorithm(), SynchronousCollectives::allGather(), SynchronousCollectives::allReduce(), SynchronousCollectives::alltoallv(), CollectProxyVectorInstance::append(), CudaComputeNonbonded::assignPatches(), CudaComputeNonbonded::assignPatchesOnPe(), PmePencilXYZ::backwardDone(), LdbCoordinator::barrier(), SynchronousCollectives::barrier(), SynchronousCollectives::broadcast(), HomePatch::buildRattleList_SOA(), HomePatch::buildSpanningTree(), ReductionMgr::buildSpanTree(), ComputeNonbondedUtil::calc_error(), Controller::calcPressure(), ComputePmeMgr::chargeGridReady(), checkSum(), ofstream_namd::close(), Box< Patch, CompAtom >::close(), Controller::compareChecksums(), ComputeCUDAMgr::ComputeCUDAMgr(), ComputePmeCUDAMgr::ComputePmeCUDAMgr(), ComputeTclBC::ComputeTclBC(), CudaPmeTranspose::copyDataDeviceToDevice(), CudaPmeTranspose::copyDataDeviceToHost(), CudaPmeTranspose::copyDataHostToDevice(), WorkDistrib::createAtomLists(), ComputeCUDAMgr::createCudaComputeNonbonded(), ComputePmeCUDAMgr::createDevicesAndAtomFiler(), CsmAckHandler(), CsmHandler(), cudaNAMD_bug(), CudaPmeOneDevice::CudaPmeOneDevice(), CudaPmeRealSpaceCompute::CudaPmeRealSpaceCompute(), MigrateAtomsCombinedMsg::distribute(), ComputeGridForce::doForce(), HomePatch::doGroupSizeCheck(), HomePatch::doGroupSizeCheck_SOA(), ComputePme::doWork(), CudaComputeNonbonded::doWork(), WorkDistrib::enqueueAngles(), WorkDistrib::enqueueAniso(), WorkDistrib::enqueueBonds(), WorkDistrib::enqueueCrossterms(), WorkDistrib::enqueueDihedrals(), WorkDistrib::enqueueExcls(), WorkDistrib::enqueueGromacsPair(), WorkDistrib::enqueueImpropers(), WorkDistrib::enqueueLCPO(), WorkDistrib::enqueueOneFourNbThole(), WorkDistrib::enqueuePme(), WorkDistrib::enqueueSelfA1(), WorkDistrib::enqueueSelfA2(), WorkDistrib::enqueueSelfA3(), WorkDistrib::enqueueSelfB1(), WorkDistrib::enqueueSelfB2(), WorkDistrib::enqueueSelfB3(), WorkDistrib::enqueueThole(), WorkDistrib::enqueueWork(), WorkDistrib::enqueueWorkA1(), WorkDistrib::enqueueWorkA2(), WorkDistrib::enqueueWorkA3(), WorkDistrib::enqueueWorkB1(), WorkDistrib::enqueueWorkB2(), WorkDistrib::enqueueWorkB3(), WorkDistrib::enqueueWorkC(), ScriptTcl::eval(), ComputeMap::extendPtrs(), findRecipEvirPe(), CudaComputeNonbonded::finishReductions(), ofstream_namd::flush(), SimpleBroadcastObject< Tensor >::get(), PmeAtomStorage::getAtomIndex(), getBlockDim(), CudaPmeTranspose::getBuffer(), ComputeCUDAMgr::getComputeCUDAMgr(), ComputeCUDAMgr::getCudaComputeNonbonded(), ComputePmeCUDAMgr::getDevice(), ComputePmeCUDAMgr::getDevicePencilY(), ComputePmeCUDAMgr::getDevicePencilZ(), ParseOptions::getfromptr(), ComputePmeCUDAMgr::getHomePencil(), ComputeLjPmeSerialMgr::getLJparameters(), Communicate::getMessage(), ComputePmeCUDAMgr::getNode(), getPencilDim(), Controller::getTotalPotentialEnergy(), globalAtomIDToSOAID(), GlobalGPUMgr::GlobalGPUMgr(), GridforceFullBaseGrid::grid_index(), FFTCompute::init(), ComputePmeCUDA::initialize(), ComputePatch::initialize(), ComputeHomePatch::initialize(), ComputePme::initialize(), LdbCoordinator::initialize(), ParallelIOMgr::initialize(), ComputePmeMgr::initialize(), ComputePmeMgr::initialize_computes(), IRSet::insert(), ParseOptions::issetfromptr(), ParseOptions::istruefromptr(), CudaComputeNonbonded::launchWork(), LdbCoordinator::LdbCoordinator(), ScriptTcl::load(), NamdState::loadStructure(), PatchMap::makePatches(), WorkDistrib::messageEnqueueWork(), CudaComputeNonbonded::messageEnqueueWork(), WorkDistrib::messageFinishCUDA(), WorkDistrib::messageFinishMIC(), HomePatch::minimize_rattle2(), Sequencer::multigratorPressure(), NAMD_version(), NAMD_write(), Node::Node(), PmeZPencil::node_process_untrans(), PmeYPencil::node_process_untrans(), ofstream_namd::open(), Box< Patch, CompAtom >::open(), CudaComputeNonbonded::openBoxesOnPe(), PatchMap::pack(), PatchMgr::PatchMgr(), CudaComputeNonbonded::patchReady(), PmePencilX::PmePencilX(), PmePencilXY::PmePencilXY(), PmePencilXYZ::PmePencilXYZ(), PmePencilY::PmePencilY(), PmePencilZ::PmePencilZ(), PmeTranspose::PmeTranspose(), ComputePmeMgr::pollChargeGridReady(), ComputePmeMgr::pollForcesReady(), PmePencilXYZMap::populateInitial(), PmePencilXMap::populateInitial(), PmePencilXYMap::populateInitial(), PmePencilMap::populateInitial(), Controller::printEnergies(), Rebalancer::printLoads(), PmePencilXMap::procNum(), PmePencilXYMap::procNum(), ProxyMgr::ProxyMgr(), HomePatch::rattle2(), Sequencer::reassignVelocities(), ProxyPatch::receiveAll(), ProxyPatch::receiveData(), ParallelIOMgr::receiveForces(), ParallelIOMgr::receivePositions(), ParallelIOMgr::receiveVelocities(), recursive_bisect_with_curve(), recvAck(), ComputePmeMgr::recvAck(), ComputePmeCUDADevice::recvAtoms(), ComputePmeCUDADevice::recvAtomsFromNeighbor(), recvBcast(), BroadcastMgr::recvBroadcast(), PatchMgr::recvCheckpointAck(), HomePatch::recvCheckpointLoad(), PatchMgr::recvCheckpointReq(), WorkDistrib::recvComputeMapChanges(), ComputeMgr::recvCudaGlobalMasterUpdateResultMsg(), GlobalMasterServer::recvData(), recvData(), ComputePmeCUDAMgr::recvDevices(), recvEvalCommand(), recvEvalResult(), PatchMgr::recvExchangeReq(), ComputePmeCUDADevice::recvForcesFromNeighbor(), ComputePmeMgr::recvGrid(), ComputeQMMgr::recvPartQM(), ComputePmeMgr::recvRecipEvir(), Output::recvReplicaDcdData(), ComputeGlobal::recvResults(), ProxyMgr::recvResults(), ComputePmeMgr::recvUngrid(), NodePmeMgr::recvUngrid(), ReductionSet::ReductionSet(), AtomMapper::registerIDsCompAtomExt(), AtomMapper::registerIDsFullAtom(), registerUserEventsForAllComputeObjs(), Node::reloadGridforceGrid(), ReductionMgr::remoteSubmit(), IRSet::remove(), replica_bcast(), replica_min_double(), RequireReductionShared::RequireReductionShared(), CollectProxyVectorInstance::reset(), CollectionMgr::CollectVectorInstance::reset(), CollectionMaster::CollectVectorInstance::reset(), ComputeGlobal::saveTotalForces(), Sequencer::scalePositionsVelocities(), ComputeNonbondedUtil::select(), PmeZPencil::send_ungrid(), PatchMgr::sendAtoms(), NodePmeMgr::sendDataHelper(), ComputePmeMgr::sendDataPart(), Communicate::sendMessage(), PatchMgr::sendMovePatches(), PatchMgr::sendOneHomePatch(), NodePmeMgr::sendPencilsHelper(), ComputePmeMgr::sendPencilsPart(), CudaPmeTranspose::setDataPtrsYZX(), CudaPmeTranspose::setDataPtrsZXY(), ComputePmeCUDADevice::setPencilProxy(), ComputePmeCUDAMgr::setupPencils(), SimpleBroadcastObject< Tensor >::SimpleBroadcastObject(), Box< Patch, CompAtom >::skip(), CudaComputeNonbonded::skipPatchesOnPe(), CudaPmeKSpaceCompute::solve(), Node::startup(), ComputeMap::storeCompute(), ComputePmeCUDA::storePmeForceMsg(), PmePencilXYZ::submitReductions(), PmePencilZ::submitReductions(), ComputePmeMgr::submitReductions(), SubmitReductionShared::SubmitReductionShared(), Sync::Sync(), SynchronousCollectives::SynchronousCollectives(), TopoManagerWrapper::TopoManagerWrapper(), CudaPmeTranspose::transposeXYZtoYZX(), CudaPmeTranspose::transposeXYZtoZXY(), IRSet::unchecked_insert(), ComputePme::ungridForces(), ComputeMap::unpack(), GridforceGrid::unpack_grid(), CudaComputeNonbonded::unregisterBoxesOnPe(), AtomMapper::unregisterIDsCompAtomExt(), AtomMapper::unregisterIDsFullAtom(), ComputeCUDAMgr::update(), ComputeMgr::updateComputes(), Node::updateGridScale(), WorkDistrib::WorkDistrib(), AtomMapper::~AtomMapper(), and Rebalancer::~Rebalancer().

197 {
198  if ( ! err_msg ) err_msg = "(unknown error)";
199  const char *bug_msg =
200  "FATAL ERROR: See http://www.ks.uiuc.edu/Research/namd/bugreport.html";
201  CkPrintf("FATAL ERROR: %s\n%s\n",err_msg, bug_msg);
202  fflush(stdout);
203  char repstr[24] = "";
204  if (CmiNumPartitions() > 1 ||
205  (Node::Object()->simParameters != 0 &&
206  Node::Object()->simParameters->CUDASOAintegrateMode)) {
207  sprintf(repstr,"REPLICA %d ", CmiMyPartition());
208  // CkAbort ensures that all replicas die
209  CkAbort("%sFATAL ERROR: %s\n%s\n", repstr, err_msg, bug_msg);
210  }
211  CkError("%sFATAL ERROR: %s\n%s\n", repstr, err_msg, bug_msg);
212 #if CHARM_VERSION < 61000
213  CkExit();
214 #else
215  CkExit(2);
216 #endif
217 }
static Node * Object()
Definition: Node.h:86

◆ NAMD_close()

void NAMD_close ( int  fd,
const char *  fname 
)

Definition at line 316 of file common.C.

316  {
317 #if defined(WIN32) && !defined(__CYGWIN__)
318  while ( _close(fd) ) {
319 #else
320  while ( close(fd) ) {
321 #endif
322  if ( errno != EINTR ) {
323  char errmsg[1024];
324  sprintf(errmsg, "Error on closing file %s", fname);
325  NAMD_err(errmsg);
326  }
327  }
328 }
void NAMD_err(const char *err_msg)
Definition: common.C:171

◆ NAMD_die()

void NAMD_die ( const char *  err_msg)

Definition at line 148 of file common.C.

References Node::Object().

Referenced by Controller::adaptTempInit(), ConfigList::add_element(), ComputeMsmMgr::addPotential(), after_backend_init(), Sequencer::algorithm(), Controller::algorithm(), CollectiveDeviceBuffer< T >::allocate_no_check(), AnisoElem::AnisoElem(), msm::PatchData::anterpolation(), msm::PatchData::anterpolationC1Hermite(), Parameters::assign_angle_index(), Parameters::assign_bond_index(), Parameters::assign_crossterm_index(), Parameters::assign_dihedral_index(), Parameters::assign_improper_index(), Parameters::assign_vdw_index(), WorkDistrib::assignNodeToPatch(), Molecule::build_go_arrays(), Molecule::build_go_params(), Molecule::build_go_sigmas(), Molecule::build_go_sigmas2(), Molecule::build_gridforce_params(), buildBondData(), HomePatch::buildRattleList(), ReductionMgr::buildSpanTree(), ParallelIOMgr::calcAtomsInEachPatch(), ComputeQMMgr::calcMOPAC(), ComputeQMMgr::calcORCA(), GlobalMasterTest::calculate(), GlobalMasterTcl::calculate(), GlobalMaster::calculate(), ComputeQMMgr::calcUSR(), Calloc(), GlobalMaster::check(), GroupRestraintParam::CheckParam(), ComputeMsmMgr::compute(), PmeRealSpace::compute_forces(), LjPmeRealSpace::compute_scaledForces(), OneFourNbTholeElem::computeForce(), AngleElem::computeForce(), LjPmeCompute::computeLJpotential(), ComputeTclBC::ComputeTclBC(), ConfigList::ConfigList(), NamdState::configListInit(), ConfigList::ConfigListNode::ConfigListNode(), Sequencer::correctMomentum(), Controller::correctMomentum(), WorkDistrib::createAtomLists(), cuda_errcheck(), cuda_getargs(), CudaComputeNonbonded::CudaComputeNonbonded(), cudaDie(), CudaGlobalMaster::CUDAGM_NS::CudaGlobalMasterClient::CudaGlobalMasterClient(), CudaGlobalMasterServer::CudaGlobalMasterServer(), curandDie(), ComputeMsmMgr::d_stencil_1d(), Molecule::delete_qm_bonded(), ComputeGridForce::doForce(), ComputeNonbondedSelf::doForce(), HomePatch::doMarginCheck(), HomePatch::doMarginCheck_SOA(), Parameters::done_reading_files(), ComputeFullDirect::doWork(), ComputeTclBC::doWork(), ARestraint::EarlyExit(), Node::earlyExit(), GlobalMasterMisc::easy_calc(), msm::Array< msm::PatchDiagram >::elem(), msm::GridFixed< T, N >::elem(), msm::Grid< Vtype >::elem(), colvarproxy_namd::error(), ScriptTcl::eval(), PmeZPencil::fft_init(), PmeYPencil::fft_init(), PmeXPencil::fft_init(), LjPmeRealSpace::fill_charges(), PmeRealSpace::fill_charges(), Ambertoppar::get(), Molecule::get_atom_from_index_in_residue(), Molecule::get_atom_from_name(), Molecule::get_atomtype(), Parameters::get_dihedral_params(), Molecule::get_fep_bonded_type(), Parameters::get_improper_params(), Molecule::get_residue_size(), Parameters::get_vdw_params(), IndexFile::getAllElements(), ComputeLjPmeSerialMgr::getLJparameters(), OneFourNbTholeElem::getMoleculePointers(), AngleElem::getMoleculePointers(), ImproperElem::getMoleculePointers(), CrosstermElem::getMoleculePointers(), DihedralElem::getMoleculePointers(), TholeElem::getMoleculePointers(), AnisoElem::getMoleculePointers(), ExclElem::getMoleculePointers(), BondElem::getMoleculePointers(), GromacsPairElem::getMoleculePointers(), IndexFile::getNElements(), OneFourNbTholeElem::getTupleInfo(), TholeElem::getTupleInfo(), AnisoElem::getTupleInfo(), GlobalMasterIMD::GlobalMasterIMD(), GlobalMasterSymmetry::GlobalMasterSymmetry(), LjPmeMgr::gridCalculation(), GromacsTopFile::GromacsTopFile(), IndexFile::IndexFile(), BackEnd::init(), LjPmeCompute::initialize(), LjPmeMgr::initialize(), LdbCoordinator::initialize(), DeviceCUDA::initialize(), GridforceFullMainGrid::initialize(), GridforceFullSubGrid::initialize(), GridforceLiteGrid::initialize(), ComputeMsmMgr::initialize(), ComputePmeMgr::initialize(), SimParameters::initialize_config_data(), msm::PatchData::interpolation(), msm::PatchData::interpolationC1Hermite(), LjPmeKSpace::LjPmeKSpace(), ScriptTcl::load(), NamdState::loadStructure(), ludcmp(), main::main(), Malloc(), Node::mallocTest(), WorkDistrib::mapComputes(), HomePatch::minimize_rattle2(), Molecule::Molecule(), HomePatch::mollyAverage(), HomePatch::mollyMollify(), NAMD_new_handler(), NAMD_read_int(), NAMD_read_line(), NAMD_seek(), NAMD_write(), ComputeMsmMgr::ndsplitting(), OneFourNbTholeElem::OneFourNbTholeElem(), IndexFile::open(), LjPmeMgr::optimizeFFT(), Node::outputPatchComputeMaps(), MGridforceParamsList::pack_data(), WorkDistrib::patchMapInit(), PDB::PDB(), PDBUnknown::PDBUnknown(), Ambertoppar::preadln(), Molecule::prepare_qm(), ProblemParsing(), MsmBlockProxyMsg::put(), MsmC1HermiteBlockProxyMsg::put(), HomePatch::rattle1old(), HomePatch::rattle2(), Molecule::read_alch_unpert_angles(), Molecule::read_alch_unpert_bonds(), Molecule::read_alch_unpert_dihedrals(), read_binary_file(), Parameters::read_charmm_parameter_file(), Parameters::read_ener_table(), Parameters::read_energy_type(), Parameters::read_energy_type_bothcubspline(), Parameters::read_energy_type_cubspline(), Molecule::read_go_file(), Parameters::read_parameter_file(), Parameters::read_parm(), SimParameters::readExtendedSystem(), AmberParm7Reader::readparm(), GridforceFullBaseGrid::readSubgridHierarchy(), Realloc(), CollectiveDeviceBuffer< T >::reallocate_no_check(), RecBisection::RecBisection(), Molecule::receive_GoMolecule(), Parameters::receive_Parameters(), CollectionMaster::receiveDataStream(), ParallelIOMgr::recvAtomsCntPerPatch(), Controller::recvCheckpointReq(), HomePatch::recvCheckpointReq(), ComputeMgr::recvComputeDPMEData(), ComputeMgr::recvComputeDPMEResults(), ComputeMgr::recvComputeEwaldData(), ComputeMgr::recvComputeEwaldResults(), ComputeMgr::recvComputeGlobalData(), ComputeMgr::recvComputeGlobalResults(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::recvCoord(), ComputeLjPmeSerialMgr::recvCoord(), ComputeFmmSerialMgr::recvCoord(), ComputeMgr::recvCudaGlobalMasterCreateMsg(), ComputeMgr::recvCudaGlobalMasterRemoveMsg(), ComputeMgr::recvCudaGlobalMasterUpdateMsg(), SynchronousCollectives::recvIndexData(), ComputeQMMgr::recvPartQM(), ComputeQMMgr::recvPntChrg(), Output::recvReplicaDcdData(), Node::reloadCharges(), Node::reloadGridforceGrid(), ReductionMgr::remoteRegister(), ReductionMgr::remoteUnregister(), ReductionSet::removeData(), Sequencer::rescaleaccelMD(), Controller::rescaleaccelMD(), ScriptTcl::run(), ComputeMsm::saveResults(), SimParameters::scriptSet(), ComputeNonbondedUtil::select(), GlobalMasterIMD::send_box(), GlobalMasterIMD::send_energies(), GlobalMasterIMD::send_fcoords(), GlobalMasterIMD::send_forces(), Molecule::send_GoMolecule(), Parameters::send_Parameters(), GlobalMasterIMD::send_time(), GlobalMasterIMD::send_velocities(), ComputeMgr::sendComputeDPMEData(), ComputeMgr::sendComputeEwaldData(), StringList::set(), GroupRestraintParam::SetGroup1AtomFileIndices(), GroupRestraintParam::SetGroup1AtomListIndices(), GroupRestraintParam::SetGroup1RefPosition(), GroupRestraintParam::SetGroup2AtomFileIndices(), GroupRestraintParam::SetGroup2AtomListIndices(), GroupRestraintParam::SetGroupName(), msm::Array< msm::PatchDiagram >::setmax(), GroupRestraintParam::SetResCenter(), GroupRestraintParam::SetResDirection(), ComputeMsmMgr::setup_hgrid_1d(), ComputeMsmMgr::setup_periodic_blocksize(), SimParameters::setupIDWS(), PatchMap::sizeGrid(), ComputeMsmMgr::splitting(), ComputeMsmMgr::stencil_1d(), NamdCentLB::Strategy(), StringList::StringList(), ScriptTcl::tclmain(), TestArray_write(), TholeElem::TholeElem(), ComputeLonepairsCUDA::updateAtoms(), Node::updateGridScale(), ReductionMgr::willRequire(), and ReductionMgr::willSubmit().

149 {
150  if ( ! err_msg ) err_msg = "(unknown error)";
151  CkPrintf("FATAL ERROR: %s\n", err_msg);
152  fflush(stdout);
153  char repstr[24] = "";
154  if (CmiNumPartitions() > 1 ||
155  (Node::Object()->simParameters != 0 &&
156  Node::Object()->simParameters->CUDASOAintegrateMode)) {
157  sprintf(repstr,"REPLICA %d ", CmiMyPartition());
158  // CkAbort ensures that all replicas die
159  CkAbort("%sFATAL ERROR: %s\n", repstr, err_msg);
160  }
161  CkError("%sFATAL ERROR: %s\n", repstr, err_msg);
162 #if CHARM_VERSION < 61000
163  CkExit();
164 #else
165  CkExit(1);
166 #endif
167 }
static Node * Object()
Definition: Node.h:86

◆ NAMD_err()

void NAMD_err ( const char *  err_msg)

Definition at line 171 of file common.C.

References Node::Object().

Referenced by after_backend_init(), ComputeQMMgr::calcMOPAC(), ComputeQMMgr::calcORCA(), ComputeQMMgr::calcUSR(), close_dcd_write(), colvarproxy_namd::error(), NAMD_close(), NAMD_open(), NAMD_open_text(), NAMD_seek(), NAMD_write(), Controller::outputExtendedSystem(), PDB::PDB(), AmberParm7Reader::read_amber_parm_stage1(), ComputeQMMgr::recvPartQM(), Output::recvReplicaDcdData(), and PDB::write().

172 {
173  if ( ! err_msg ) err_msg = "(unknown error)";
174  const char *sys_err_msg = strerror(errno);
175  if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
176  CkPrintf("FATAL ERROR: %s: %s\n", err_msg, sys_err_msg);
177  fflush(stdout);
178  char repstr[24] = "";
179  if (CmiNumPartitions() > 1 ||
180  (Node::Object()->simParameters != 0 &&
181  Node::Object()->simParameters->CUDASOAintegrateMode)) {
182  sprintf(repstr,"REPLICA %d ", CmiMyPartition());
183  // CkAbort ensures that all replicas die
184  CkAbort("%sFATAL ERROR: %s: %s\n", repstr, err_msg, sys_err_msg);
185  }
186  CkError("%sFATAL ERROR: %s: %s\n", repstr, err_msg, sys_err_msg);
187 #if CHARM_VERSION < 61000
188  CkExit();
189 #else
190  CkExit(1);
191 #endif
192 }
static Node * Object()
Definition: Node.h:86

◆ NAMD_file_exists()

int NAMD_file_exists ( const char *  filename)

Definition at line 220 of file common.C.

References endi(), iERROR(), and iout.

Referenced by NAMD_backup_file().

220  {
221  int rval;
222  do {
223  rval = access(filename, F_OK);
224  } while ( rval != 0 && errno == EINTR );
225  if ( rval != 0 && errno != ENOENT ) {
226  const char *sys_err_msg = strerror(errno);
227  if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
228  iout << iERROR << "Error on checking file "
229  << filename << ": " << sys_err_msg << "\n" << endi;
230  fflush(stdout);
231  }
232  return ! rval;
233 }
std::ostream & endi(std::ostream &s)
Definition: InfoStream.C:54
#define iout
Definition: InfoStream.h:51
std::ostream & iERROR(std::ostream &s)
Definition: InfoStream.C:83

◆ NAMD_gcd()

int NAMD_gcd ( int  a,
int  b 
)

Definition at line 103 of file common.C.

References NAMD_gcd().

Referenced by Sequencer::integrate(), Sequencer::integrate_SOA(), and NAMD_gcd().

104 {
105  if(a == 0 || b == 0) return 0;
106  else if(a == b) return a;
107  else if(a > b) return NAMD_gcd(a-b,b);
108  return NAMD_gcd(a, b-a);
109 }
int NAMD_gcd(int a, int b)
Definition: common.C:103

◆ NAMD_open_text()

int NAMD_open_text ( const char *  fname,
int  append 
)

Definition at line 271 of file common.C.

References NAMD_err().

Referenced by ofstream_namd::open().

271  {
272  int fd;
273 
274  // open the file and die if the open fails
275 #if defined(WIN32) && !defined(__CYGWIN__)
276  while ( (fd = _open(fname, O_WRONLY|(append?O_APPEND:O_EXCL)|O_CREAT|O_TEXT,_S_IREAD|_S_IWRITE)) < 0) {
277 #else
278 #ifdef NAMD_NO_O_EXCL
279  while ( (fd = open(fname, O_WRONLY|(append?O_APPEND:O_TRUNC)|O_CREAT,
280 #else
281  while ( (fd = open(fname, O_WRONLY|(append?O_APPEND:O_EXCL)|O_CREAT,
282 #endif
283  S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)) < 0) {
284 #endif
285  if ( errno != EINTR ) {
286  char errmsg[1024];
287  sprintf(errmsg, "Unable to open text file %s", fname);
288  NAMD_err(errmsg);
289  }
290  }
291 
292  return fd;
293 }
void NAMD_err(const char *err_msg)
Definition: common.C:171

◆ NAMD_quit()

void NAMD_quit ( const char *  err_msg)

Definition at line 126 of file common.C.

References Node::Object().

Referenced by GlobalMasterIMD::get_vmd_forces(), and Controller::printTiming().

127 {
128  if ( ! err_msg ) err_msg = "(unknown error)";
129  CkPrintf("EXITING: %s\n", err_msg);
130  fflush(stdout);
131  char repstr[24] = "";
132  if (CmiNumPartitions() > 1
133  || Node::Object()->simParameters->CUDASOAintegrateMode) {
134  sprintf(repstr,"REPLICA %d ", CmiMyPartition());
135  // CkAbort ensures that all replicas die
136  CkAbort("%sEXITING: %s\n", repstr, err_msg);
137  }
138  CkError("%sEXITING: %s\n", repstr, err_msg);
139 #if CHARM_VERSION < 61000
140  CkExit();
141 #else
142  CkExit(0);
143 #endif
144 }
static Node * Object()
Definition: Node.h:86

◆ NAMD_stringdup()

char* NAMD_stringdup ( const char *  s)

Definition at line 112 of file common.C.

112  {
113  char *rs;
114 
115  if(!s)
116  return NULL;
117 
118  rs = new char[strlen(s) + 1];
119  strcpy(rs,s);
120 
121  return rs;
122 }

◆ NAMD_version()

void NAMD_version ( int *  major,
int *  minor,
int *  patchLevel,
int *  releaseType 
)

Definition at line 57 of file common.C.

References NAMD_ALPHA_RELEASE, NAMD_BETA_RELEASE, NAMD_bug(), NAMD_FINAL_RELEASE, NAMD_UNKNOWN_RELEASE, and NAMD_version_string().

58 {
59  int NAMD_major = 0;
60  int NAMD_minor = 0;
61  int NAMD_patchLevel = 0;
62  int NAMD_releaseType = NAMD_UNKNOWN_RELEASE;
63 
64  // have to parse the version string to determine numbers
65  const char *vstr = NAMD_version_string();
66  char dot[4] = ""; // expect to read "."
67  char release[8] = ""; // expect to read "" or "."
68  // or "alpha" or "beta" or "final" or "release"
69  char extra[4] = ""; // bad version string if we read an extra character
70  int n = sscanf(vstr, "%d%3[^0-9]%d%7[^0-9]%d%c",
71  &NAMD_major, dot, &NAMD_minor, release, &NAMD_patchLevel, extra);
72  if (n < 3 || n > 5) {
73  NAMD_bug("Unable to parse NAMD_VERSION from Makefile");
74  }
75  if (n >= 4) {
76  if (strcmp(release, "a") == 0 || strcmp(release, "alpha") == 0) {
77  NAMD_releaseType = NAMD_ALPHA_RELEASE;
78  }
79  else if (strcmp(release, "b") == 0 || strcmp(release, "beta") == 0) {
80  NAMD_releaseType = NAMD_BETA_RELEASE;
81  }
82  else if (strcmp(release, ".") == 0 ||
83  strcmp(release, "final") == 0 ||
84  strcmp(release, "release") == 0 ||
85  strcmp(release, "patch") == 0) {
86  NAMD_releaseType = NAMD_FINAL_RELEASE;
87  }
88  else {
89  NAMD_bug("Unable to parse NAMD_VERSION from Makefile");
90  }
91  }
92  else {
93  NAMD_releaseType = NAMD_FINAL_RELEASE;
94  }
95  // now return values to caller
96  if (major != NULL) *major = NAMD_major;
97  if (minor != NULL) *minor = NAMD_minor;
98  if (patchLevel != NULL) *patchLevel = NAMD_patchLevel;
99  if (releaseType != NULL) *releaseType = NAMD_releaseType;
100 }
const char * NAMD_version_string()
Definition: common.C:52
void NAMD_bug(const char *err_msg)
Definition: common.C:196

◆ NAMD_version_string()

const char* NAMD_version_string ( void  )

Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved.

Definition at line 52 of file common.C.

Referenced by NAMD_version().

52  {
53  return NAMD_VERSION; // macro defined in toplevel Makefile
54 }

◆ NAMD_write()

void NAMD_write ( int  fd,
const char *  buf,
size_t  count,
const char *  fname 
)

Definition at line 296 of file common.C.

296  {
297  while ( count ) {
298 #if defined(WIN32) && !defined(__CYGWIN__)
299  long retval = _write(fd,buf,count);
300 #else
301  ssize_t retval = write(fd,buf,count);
302 #endif
303  if ( retval < 0 && errno == EINTR ) retval = 0;
304  if ( retval < 0 ) {
305  char errmsg[1024];
306  sprintf(errmsg, "Error on writing to file %s", fname);
307  NAMD_err(errmsg);
308  }
309  if ( retval > count ) NAMD_bug("extra bytes written in NAMD_write()");
310  buf += retval;
311  count -= retval;
312  }
313 }
void NAMD_err(const char *err_msg)
Definition: common.C:171
void NAMD_bug(const char *err_msg)
Definition: common.C:196