common.h File Reference

#include <unistd.h>
#include <stdio.h>
#include <limits.h>
#include "converse.h"

Go to the source code of this file.

Defines

#define COULOMB   332.0636
#define BOLTZMANN   0.001987191
#define TIMEFACTOR   48.88821
#define PRESSUREFACTOR   6.95E4
#define PDBVELFACTOR   20.45482706
#define PDBVELINVFACTOR   (1.0/PDBVELFACTOR)
#define PNPERKCALMOL   69.479
#define namdnearbyint(x)   floor((x)+0.5)
#define PI   3.141592653589793
#define TWOPI   2.0 * PI
#define ONE   1.000000000000000
#define ZERO   0.000000000000000
#define SMALLRAD   0.0005
#define SMALLRAD2   SMALLRAD*SMALLRAD
#define FALSE   0
#define TRUE   1
#define NO   0
#define YES   1
#define STRINGNULL   '\0'
#define MAX_NEIGHBORS   27
#define SIMPARAMSTAG   100
#define STATICPARAMSTAG   101
#define MOLECULETAG   102
#define FULLTAG   104
#define FULLFORCETAG   105
#define DPMTATAG   106
#define GRIDFORCEGRIDTAG   107
#define COMPUTEMAPTAG   108
#define CYCLE_BARRIER   0
#define PME_BARRIER   0
#define STEP_BARRIER   0
#define USE_BARRIER   (CYCLE_BARRIER || PME_BARRIER || STEP_BARRIER)
#define NAMD_SeparateWaters   0
#define NAMD_ComputeNonbonded_SortAtoms   1
#define NAMD_ComputeNonbonded_SortAtoms_LessBranches   1
#define WAT_TIP3   0
#define WAT_TIP4   1
#define WAT_SWM4   2

Typedefs

typedef long long int64
typedef float Real
typedef double BigReal
typedef int Bool

Functions

void NAMD_quit (const char *)
void NAMD_die (const char *)
void NAMD_err (const char *)
void NAMD_bug (const char *)
int NAMD_file_exists (const char *filename)
void NAMD_backup_file (const char *filename, const char *extension=0)
int NAMD_open_text (const char *fname, int append=0)
void NAMD_write (int fd, const char *buf, size_t count, const char *fname="in NAMD_write()")
void NAMD_close (int fd, const char *fname)
char * NAMD_stringdup (const char *)
FILE * Fopen (const char *filename, const char *mode)
int Fclose (FILE *fout)

Define Documentation

#define BOLTZMANN   0.001987191
#define COMPUTEMAPTAG   108

Definition at line 157 of file common.h.

Referenced by WorkDistrib::recvComputeMapChanges(), and WorkDistrib::sendComputeMap().

#define COULOMB   332.0636
#define CYCLE_BARRIER   0

Definition at line 159 of file common.h.

#define DPMTATAG   106

Definition at line 155 of file common.h.

#define FALSE   0
#define FULLFORCETAG   105

Definition at line 154 of file common.h.

Referenced by ComputeFullDirect::doWork().

#define FULLTAG   104

Definition at line 153 of file common.h.

Referenced by ComputeFullDirect::doWork().

#define GRIDFORCEGRIDTAG   107

Definition at line 156 of file common.h.

Referenced by Node::reloadGridforceGrid().

#define MAX_NEIGHBORS   27

Definition at line 129 of file common.h.

#define MOLECULETAG   102

Definition at line 152 of file common.h.

Referenced by Node::resendMolecule().

#define NAMD_ComputeNonbonded_SortAtoms   1

Definition at line 184 of file common.h.

#define NAMD_ComputeNonbonded_SortAtoms_LessBranches   1

Definition at line 185 of file common.h.

#define NAMD_SeparateWaters   0

Definition at line 171 of file common.h.

#define namdnearbyint (  )     floor((x)+0.5)
#define NO   0

Definition at line 121 of file common.h.

#define ONE   1.000000000000000

Definition at line 89 of file common.h.

#define PDBVELFACTOR   20.45482706

Definition at line 48 of file common.h.

Referenced by ParallelIOMgr::bcastMolInfo(), and Sequencer::maximumMove().

#define PDBVELINVFACTOR   (1.0/PDBVELFACTOR)

Definition at line 49 of file common.h.

#define PI   3.141592653589793
#define PME_BARRIER   0

Definition at line 160 of file common.h.

#define PNPERKCALMOL   69.479

Definition at line 50 of file common.h.

#define PRESSUREFACTOR   6.95E4
#define SIMPARAMSTAG   100

Definition at line 150 of file common.h.

#define SMALLRAD   0.0005

Definition at line 97 of file common.h.

#define SMALLRAD2   SMALLRAD*SMALLRAD

Definition at line 101 of file common.h.

#define STATICPARAMSTAG   101

Definition at line 151 of file common.h.

Referenced by Node::resendMolecule().

#define STEP_BARRIER   0

Definition at line 161 of file common.h.

#define STRINGNULL   '\0'
#define TIMEFACTOR   48.88821
#define TRUE   1
#define TWOPI   2.0 * PI
#define USE_BARRIER   (CYCLE_BARRIER || PME_BARRIER || STEP_BARRIER)

Definition at line 163 of file common.h.

#define WAT_SWM4   2
#define WAT_TIP3   0

Definition at line 188 of file common.h.

Referenced by HomePatch::rattle1().

#define WAT_TIP4   1
#define YES   1

Definition at line 122 of file common.h.

#define ZERO   0.000000000000000

Definition at line 93 of file common.h.

Referenced by ComputeNonbondedUtil::calcGBIS().


Typedef Documentation

typedef double BigReal

Definition at line 112 of file common.h.

typedef int Bool

Definition at line 131 of file common.h.

typedef long long int64

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

Definition at line 34 of file common.h.

typedef float Real

Definition at line 107 of file common.h.


Function Documentation

int Fclose ( FILE *  fout  ) 

Definition at line 359 of file common.C.

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

00360 {
00361   int rc = -1;
00362 #if !defined(NOCOMPRESSED)
00363   rc = pclose(fout);
00364 #endif
00365   if (rc == -1) // stream not associated with a popen()
00366     {
00367     rc = fclose(fout);
00368     }
00369   return rc;
00370 } /* Fclose() */

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

Definition at line 265 of file common.C.

References endi(), and iout.

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

00266 {
00267   struct stat buf;
00268   // check if basic filename exists (and not a directory)
00269 
00270 #if defined(NOCOMPRESSED)
00271   if (!stat(filename,&buf))
00272     {
00273       FILE *rval;
00274       while ( ! (rval = fopen(filename,mode)) ) {
00275         if ( errno != EINTR ) break;
00276       }
00277       return(rval);
00278     }
00279 #else
00280   if (!stat(filename,&buf))
00281     {
00282       if (!S_ISDIR(buf.st_mode)) {
00283         FILE *rval;
00284         while ( ! (rval = fopen(filename,mode)) ) {
00285           if ( errno != EINTR ) break;
00286         }
00287         return(rval);
00288       }
00289     }
00290   // check for a compressed file
00291   char *realfilename;
00292   char *command;
00293   FILE *fout;
00294   command = (char *)malloc(strlen(filename)+25);
00295   // check for .Z (unix compress)
00296   sprintf(command,"zcat %s.Z",filename);
00297   realfilename = command+5;
00298   iout << "Command = " << command << "\n" << endi;
00299   iout << "Filename.Z = " << realfilename << "\n" << endi;
00300   if (!stat(realfilename,&buf))
00301         {
00302         if (!S_ISDIR(buf.st_mode))
00303                 {
00304                 fout = popen(command,mode);
00305                 // on HP-UX, the first character(s) out of pipe may be
00306                 // garbage!  (Argh!)
00307                 int C;
00308                 do
00309                   {
00310                   C = fgetc(fout);
00311                   // iout << "C is " << C << "\n" << endi;
00312                   if (isalnum(C) || isspace(C))
00313                         {
00314                         ungetc(C,fout);
00315                         C = -1; // outta loop
00316                         }
00317                   } while(C != -1);
00318                 free(command);
00319                 return(fout);
00320                 }
00321         }
00322   // check for .gz (gzip)
00323   sprintf(command,"gzip -d -c %s.gz",filename);
00324   realfilename = command+11;
00325   iout << "Command = " << command << "\n" << endi;
00326   iout << "Filename.gz = " << realfilename << "\n" << endi;
00327   if (!stat(realfilename,&buf))
00328         {
00329         if (!S_ISDIR(buf.st_mode))
00330                 {
00331                 fout = popen(command,mode);
00332                 // on HP-UX, the first character(s) out of pipe may be
00333                 // garbage!  (Argh!)
00334                 int C;
00335                 do
00336                   {
00337                   C = fgetc(fout);
00338                   // iout << "C is " << C << "\n" << endi;
00339                   if (isalnum(C) || isspace(C))
00340                         {
00341                         ungetc(C,fout);
00342                         C = -1; // outta loop
00343                         }
00344                   } while(C != -1);
00345                 free(command);
00346                 return(fout);
00347                 }
00348         }
00349   free(command);
00350 #endif /* !defined(NOCOMPRESSED) */
00351 
00352   return(NULL);
00353 } /* Fopen() */

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

Definition at line 159 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().

00160 {
00161   if (NAMD_file_exists(filename)) {
00162     if ( ! extension ) extension = ".BAK";
00163     char *backup = new char[strlen(filename)+strlen(extension)+1];
00164     strcpy(backup, filename);
00165     strcat(backup, extension);
00166 #if defined(WIN32) && !defined(__CYGWIN__)
00167     if ( remove(backup) ) if ( errno != ENOENT ) {
00168       char *sys_err_msg = strerror(errno);
00169       if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
00170       iout << iERROR << "Error on removing file "
00171         << backup << ": " << sys_err_msg << "\n" << endi;
00172       fflush(stdout);
00173     }
00174 #endif
00175     while ( rename(filename,backup) )
00176     {
00177       if ( errno == EINTR ) continue;
00178       const char *sys_err_msg = strerror(errno);
00179       if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
00180       iout << iERROR << "Error on renaming file " << filename
00181         << " to " << backup << ": " << sys_err_msg << "\n" << endi;
00182       fflush(stdout);
00183       if ( errno == EXDEV ) continue;
00184       break;
00185       // char errmsg[256];
00186       // sprintf(errmsg, "Error on renaming file %s to %s",filename,backup);
00187       // NAMD_err(errmsg);
00188     }
00189     delete [] backup;
00190   }
00191 }

void NAMD_bug ( const char *   ) 

Definition at line 123 of file common.C.

Referenced by Sequencer::algorithm(), Controller::algorithm(), CollectProxyVectorInstance::append(), CudaComputeNonbonded::assignPatches(), CudaComputeNonbonded::assignPatchesOnPe(), PmePencilXYZ::backwardDone(), LdbCoordinator::barrier(), ComputeNonbondedCUDA::build_exclusions(), ComputeNonbondedCUDA::build_lj_table(), HomePatch::buildSpanningTree(), ReductionMgr::buildSpanTree(), ComputeNonbondedUtil::calc_error(), Controller::calcPressure(), ComputePmeMgr::chargeGridReady(), checkSum(), ofstream_namd::close(), Box< Patch, CompAtom >::close(), Controller::compareChecksums(), ComputeCUDAMgr::ComputeCUDAMgr(), ComputeNonbondedCUDA::ComputeNonbondedCUDA(), ComputePmeCUDAMgr::ComputePmeCUDAMgr(), ComputeTclBC::ComputeTclBC(), CudaPmeTranspose::copyDataDeviceToDevice(), CudaPmeTranspose::copyDataDeviceToHost(), CudaPmeTranspose::copyDataHostToDevice(), WorkDistrib::createAtomLists(), ComputeCUDAMgr::createCudaComputeNonbonded(), ComputePmeCUDAMgr::createDevicesAndAtomFiler(), CsmAckHandler(), CsmHandler(), cuda_check_local_progress(), cuda_check_remote_progress(), cudaNAMD_bug(), CudaPmeRealSpaceCompute::CudaPmeRealSpaceCompute(), MigrateAtomsCombinedMsg::distribute(), ComputeGridForce::doForce(), HomePatch::doGroupSizeCheck(), CudaComputeNonbonded::doWork(), ComputePme::doWork(), ComputeNonbondedCUDA::doWork(), WorkDistrib::enqueueAngles(), WorkDistrib::enqueueAniso(), WorkDistrib::enqueueBonds(), WorkDistrib::enqueueCrossterms(), WorkDistrib::enqueueDihedrals(), WorkDistrib::enqueueExcls(), WorkDistrib::enqueueGromacsPair(), WorkDistrib::enqueueImpropers(), WorkDistrib::enqueueLCPO(), 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(), PmeAtomStorage::getAtomIndex(), getBlockDim(), CudaPmeTranspose::getBuffer(), ComputeCUDAMgr::getComputeCUDAMgr(), ComputeCUDAMgr::getCudaComputeNonbonded(), ComputePmeCUDAMgr::getDevice(), ComputePmeCUDAMgr::getDevicePencilY(), ComputePmeCUDAMgr::getDevicePencilZ(), ParseOptions::getfromptr(), ComputePmeCUDAMgr::getHomePencil(), Communicate::getMessage(), ComputePmeCUDAMgr::getNode(), getPencilDim(), GridforceFullBaseGrid::grid_index(), FFTCompute::init(), ParallelIOMgr::initialize(), LdbCoordinator::initialize(), ComputePmeCUDA::initialize(), ComputePme::initialize(), ComputePmeMgr::initialize(), ComputePatch::initialize(), ComputeHomePatch::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_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(), PmePencilXYMap::populateInitial(), PmePencilXMap::populateInitial(), PmePencilXYZMap::populateInitial(), PmePencilMap::populateInitial(), Controller::printEnergies(), Rebalancer::printLoads(), PmePencilXYMap::procNum(), PmePencilXMap::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(), GlobalMasterServer::recvData(), recvData(), ComputePmeCUDAMgr::recvDevices(), recvEvalCommand(), recvEvalResult(), PatchMgr::recvExchangeReq(), ComputePmeCUDADevice::recvForcesFromNeighbor(), ComputePmeMgr::recvGrid(), ComputeQMMgr::recvPartQM(), ComputePmeMgr::recvRecipEvir(), Output::recvReplicaDcdData(), ProxyMgr::recvResults(), ComputeGlobal::recvResults(), ComputePmeMgr::recvUngrid(), NodePmeMgr::recvUngrid(), ReductionSet::ReductionSet(), register_cuda_compute_pair(), register_cuda_compute_self(), AtomMapper::registerIDsCompAtomExt(), AtomMapper::registerIDsFullAtom(), registerUserEventsForAllComputeObjs(), Node::reloadGridforceGrid(), ReductionMgr::remoteSubmit(), IRSet::remove(), replica_bcast(), replica_min_double(), 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(), PmePencilZ::submitReductions(), PmePencilXYZ::submitReductions(), ComputePmeMgr::submitReductions(), Sync::Sync(), TopoManagerWrapper::TopoManagerWrapper(), CudaPmeTranspose::transposeXYZtoYZX(), CudaPmeTranspose::transposeXYZtoZXY(), IRSet::unchecked_insert(), ComputePme::ungridForces(), ComputeMap::unpack(), GridforceGrid::unpack_grid(), unregister_cuda_compute(), CudaComputeNonbonded::unregisterBoxesOnPe(), AtomMapper::unregisterIDsCompAtomExt(), AtomMapper::unregisterIDsFullAtom(), ComputeCUDAMgr::update(), ComputeMgr::updateComputes(), Node::updateGridScale(), WorkDistrib::WorkDistrib(), AtomMapper::~AtomMapper(), and Rebalancer::~Rebalancer().

00124 {
00125   if ( ! err_msg ) err_msg = "(unknown error)";
00126   const char *bug_msg = 
00127     "FATAL ERROR: See http://www.ks.uiuc.edu/Research/namd/bugreport.html";
00128   CkPrintf("FATAL ERROR: %s\n%s\n",err_msg, bug_msg);
00129   fflush(stdout);
00130   char repstr[24] = "";
00131   if (CmiNumPartitions() > 1) {
00132     sprintf(repstr,"REPLICA %d ", CmiMyPartition());
00133   }
00134   CkError("%sFATAL ERROR: %s\n%s\n", repstr, err_msg, bug_msg);
00135 #if CHARM_VERSION < 61000
00136   CkExit();
00137 #else
00138   CkExit(2);
00139 #endif
00140 }

void NAMD_close ( int  fd,
const char *  fname 
)

Definition at line 239 of file common.C.

References NAMD_err().

00239                                            {
00240 #ifdef WIN32
00241   while ( _close(fd) ) {
00242 #else
00243   while ( close(fd) ) {
00244 #endif
00245     if ( errno != EINTR ) {
00246       char errmsg[1024];
00247       sprintf(errmsg, "Error on closing file %s", fname);
00248       NAMD_err(errmsg);
00249     }
00250   }
00251 }

void NAMD_die ( const char *   ) 

Definition at line 83 of file common.C.

00084 {
00085   if ( ! err_msg ) err_msg = "(unknown error)";
00086   CkPrintf("FATAL ERROR: %s\n", err_msg);
00087   fflush(stdout);
00088   char repstr[24] = "";
00089   if (CmiNumPartitions() > 1) {
00090     sprintf(repstr,"REPLICA %d ", CmiMyPartition());
00091   }
00092   CkError("%sFATAL ERROR: %s\n", repstr, err_msg);
00093 #if CHARM_VERSION < 61000
00094   CkExit();
00095 #else
00096   CkExit(1);
00097 #endif
00098 }

void NAMD_err ( const char *   ) 

Definition at line 102 of file common.C.

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(), ComputeQMMgr::recvPartQM(), Output::recvReplicaDcdData(), and PDB::write().

00103 {
00104   if ( ! err_msg ) err_msg = "(unknown error)";
00105   const char *sys_err_msg = strerror(errno);
00106   if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
00107   CkPrintf("FATAL ERROR: %s: %s\n", err_msg, sys_err_msg);
00108   fflush(stdout);
00109   char repstr[24] = "";
00110   if (CmiNumPartitions() > 1) {
00111     sprintf(repstr,"REPLICA %d ", CmiMyPartition());
00112   }
00113   CkError("%sFATAL ERROR: %s: %s\n", repstr, err_msg, sys_err_msg);
00114 #if CHARM_VERSION < 61000
00115   CkExit();
00116 #else
00117   CkExit(1);
00118 #endif
00119 }

int NAMD_file_exists ( const char *  filename  ) 

Definition at line 143 of file common.C.

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

Referenced by NAMD_backup_file().

00143                                            {
00144   int rval;
00145   do {
00146     rval = access(filename, F_OK);
00147   } while ( rval != 0 && errno == EINTR );
00148   if ( rval != 0 && errno != ENOENT ) {
00149     const char *sys_err_msg = strerror(errno);
00150     if ( ! sys_err_msg ) sys_err_msg = "(unknown error)";
00151     iout << iERROR << "Error on checking file "
00152       << filename << ": " << sys_err_msg << "\n" << endi;
00153     fflush(stdout);
00154   }
00155   return ! rval;
00156 }

int NAMD_open_text ( const char *  fname,
int  append = 0 
)

Definition at line 194 of file common.C.

References NAMD_err().

Referenced by ofstream_namd::open().

00194                                                   {
00195   int fd;
00196 
00197   //  open the file and die if the open fails
00198 #ifdef WIN32
00199   while ( (fd = _open(fname, O_WRONLY|(append?O_APPEND:O_EXCL)|O_CREAT|O_TEXT,_S_IREAD|_S_IWRITE)) < 0) {
00200 #else
00201 #ifdef NAMD_NO_O_EXCL
00202   while ( (fd = open(fname, O_WRONLY|(append?O_APPEND:O_TRUNC)|O_CREAT,
00203 #else
00204   while ( (fd = open(fname, O_WRONLY|(append?O_APPEND:O_EXCL)|O_CREAT,
00205 #endif
00206                            S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)) < 0) {
00207 #endif
00208     if ( errno != EINTR ) {
00209       char errmsg[1024];
00210       sprintf(errmsg, "Unable to open text file %s", fname);
00211       NAMD_err(errmsg);
00212     }
00213   }
00214 
00215   return fd;
00216 }

void NAMD_quit ( const char *   ) 

Definition at line 64 of file common.C.

Referenced by GlobalMasterIMD::get_vmd_forces().

00065 {
00066   if ( ! err_msg ) err_msg = "(unknown error)";
00067   CkPrintf("EXITING: %s\n", err_msg);
00068   fflush(stdout);
00069   char repstr[24] = "";
00070   if (CmiNumPartitions() > 1) {
00071     sprintf(repstr,"REPLICA %d ", CmiMyPartition());
00072   }
00073   CkError("%sEXITING: %s\n", repstr, err_msg);
00074 #if CHARM_VERSION < 61000
00075   CkExit();
00076 #else
00077   CkExit(0);
00078 #endif
00079 }

char* NAMD_stringdup ( const char *  s  ) 

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

Definition at line 50 of file common.C.

00050                                     {
00051   char *rs;
00052 
00053   if(!s)
00054     return NULL;
00055 
00056   rs = new char[strlen(s) + 1];
00057   strcpy(rs,s);
00058 
00059   return rs;
00060 }

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

Definition at line 219 of file common.C.

References endi(), iout, iWARN(), NAMD_bug(), and NAMD_err().

00219                                                                           {
00220   while ( count ) {
00221 #if defined(WIN32) && !defined(__CYGWIN__)
00222     long retval = _write(fd,buf,count);
00223 #else
00224     ssize_t retval = write(fd,buf,count);
00225 #endif
00226     if ( retval < 0 && errno == EINTR ) retval = 0;
00227     if ( retval < 0 ) {
00228       char errmsg[1024];
00229       sprintf(errmsg, "Error on writing to file %s", fname);
00230       NAMD_err(errmsg);
00231     }
00232     if ( retval > count ) NAMD_bug("extra bytes written in NAMD_write()");
00233     buf += retval;
00234     count -= retval;
00235   }
00236 }


Generated on 12 Jul 2020 for NAMD by  doxygen 1.6.1