/* *_________________________________________________________________________* * POEMS: PARALLELIZABLE OPEN SOURCE EFFICIENT MULTIBODY SOFTWARE * * DESCRIPTION: SEE READ-ME * * FILE NAME: colmatmap.cpp * * AUTHORS: See Author List * * GRANTS: See Grants List * * COPYRIGHT: (C) 2005 by Authors as listed in Author's List * * LICENSE: Please see License Agreement * * DOWNLOAD: Free at www.rpi.edu/~anderk5 * * ADMINISTRATOR: Prof. Kurt Anderson * * Computational Dynamics Lab * * Rensselaer Polytechnic Institute * * 110 8th St. Troy NY 12180 * * CONTACT: anderk5@rpi.edu * *_________________________________________________________________________*/ #include "colmatmap.h" #include "colmatrix.h" #include #include using namespace std; ColMatMap::ColMatMap(){ numrows = 0; elements = 0; } ColMatMap::~ColMatMap(){ delete [] elements; } ColMatMap::ColMatMap(const ColMatMap& A){ // copy constructor numrows = 0; elements = 0; Dim(A.numrows); for(int i=0;inumrows) || (i<1)){ cerr << "matrix index invalid in operator ()" << endl; exit(1); } return *(elements[i-1]); } double ColMatMap::Get_1int(int i) const{ if((i>numrows) || (i<1)){ cerr << "matrix index exceeded in Get" << endl; exit(1); } return *(elements[i-1]); } void ColMatMap::Set_1int(int i, double value){ if((i>numrows) || (i<1)){ cerr << "matrix index exceeded in Set" << endl; exit(1); } *(elements[i-1]) = value; } double ColMatMap::BasicGet_1int(int i) const{ return *(elements[i]); } void ColMatMap::SetElementPointer(int i, double* p){ elements[i] = p; } double* ColMatMap::GetElementPointer(int i){ return elements[i]; } void ColMatMap::BasicSet_1int(int i, double value){ *(elements[i]) = value; } void ColMatMap::BasicIncrement_1int(int i, double value){ *(elements[i]) += value; } void ColMatMap::AssignVM(const VirtualMatrix& A){ if(A.GetNumRows() != numrows){ cerr << "dimension mismatch in ColMatMap assignment" << endl; exit(0); } if( A.GetNumCols() != 1 ){ cerr << "error trying to write a 2D matrix to a collumn" << endl; exit(1); } for(int i=0;i