Changeset 13a574
- Timestamp:
- Oct 5, 2009, 6:45:06 PM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 33f9f7
- Parents:
- aba92d (diff), fa861b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 9 added
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
configure.ac
raba92d r13a574 24 24 # Checks for libraries. 25 25 AC_CHECK_LIB(m, sqrt, ,AC_MSG_ERROR([compatible libc math library not found])) 26 27 # Boost libraries 28 AX_BOOST_BASE([1.33.1]) 29 AX_BOOST_PROGRAM_OPTIONS 30 #AX_BOOST_FOREACH 31 #AX_BOOST_FILESYSTEM 32 #AX_BOOST_THREAD 33 #AX_BOOST_PROGRAM_OPTIONS 34 #AX_BOOST_SERIALIZATION 26 35 27 36 # Checks for header files. -
src/Makefile.am
-
Property mode
changed from
100755
to100644
raba92d r13a574 1 1 SOURCE = atom.cpp bond.cpp boundary.cpp config.cpp element.cpp ellipsoid.cpp helpers.cpp leastsquaremin.cpp linkedcell.cpp moleculelist.cpp molecules.cpp parser.cpp periodentafel.cpp tesselation.cpp tesselationhelpers.cpp vector.cpp verbose.cpp 2 HEADER = atom.hpp bond.hpp boundary.hpp config.hpp defs.hpp element.hpp ellipsoid.hpp helpers.hpp leastsquaremin.hpp linkedcell.hpp m olecules.hpp parser.hpp periodentafel.hpp stackclass.hpp tesselation.hpp tesselationhelpers.hpp vector.hpp verbose.hpp2 HEADER = atom.hpp bond.hpp boundary.hpp config.hpp defs.hpp element.hpp ellipsoid.hpp helpers.hpp leastsquaremin.hpp linkedcell.hpp memoryallocator.hpp memoryusageobserver.cpp memoryusageobserver.hpp molecules.hpp parser.hpp periodentafel.hpp stackclass.hpp tesselation.hpp tesselationhelpers.hpp vector.hpp verbose.hpp 3 3 4 noinst_PROGRAMS = ActOnAllTest VectorUnitTest TesselationUnitTest 4 noinst_PROGRAMS = ActOnAllTest VectorUnitTest MemoryAllocatorUnitTest MemoryUsageObserverUnitTest TesselationUnitTest 5 6 BOOST_LIB = $(BOOST_LDFLAGS) $(BOOST_MPL_LIB) 5 7 6 8 bin_PROGRAMS = molecuilder joiner analyzer 7 9 molecuilderdir = ${bindir} 8 10 molecuilder_DATA = elements.db valence.db orbitals.db Hbonddistance.db Hbondangle.db 11 molecuilder_LDFLAGS = $(BOOST_LIB) 9 12 molecuilder_SOURCES = ${SOURCE} builder.cpp ${HEADER} 10 joiner_SOURCES = joiner.cpp datacreator.cpp element.cpp helpers.cpp periodentafel.cpp parser.cpp verbose.cpp datacreator.hpp helpers.hpp parser.hpp periodentafel.hpp11 analyzer_SOURCES = analyzer.cpp datacreator.cpp element.cpp helpers.cpp periodentafel.cpp parser.cpp verbose.cpp helpers.hpp periodentafel.hpp parser.hpp datacreator.hpp13 joiner_SOURCES = joiner.cpp datacreator.cpp element.cpp helpers.cpp memoryallocator.hpp memoryusageobserver.cpp memoryusageobserver.hpp periodentafel.cpp parser.cpp verbose.cpp datacreator.hpp helpers.hpp parser.hpp periodentafel.hpp 14 analyzer_SOURCES = analyzer.cpp datacreator.cpp element.cpp helpers.cpp memoryallocator.hpp memoryusageobserver.cpp memoryusageobserver.hpp periodentafel.cpp parser.cpp verbose.cpp helpers.hpp periodentafel.hpp parser.hpp datacreator.hpp 12 15 13 TESTS = VectorUnitTest TesselationUnitTest16 TESTS = VectorUnitTest MemoryAllocatorUnitTest MemoryUsageObserverUnitTest TesselationUnitTest 14 17 check_PROGRAMS = $(TESTS) 15 VectorUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp leastsquaremin.cpp leastsquaremin.hpp vectorunittest.cpp vectorunittest.hpp vector.cpp vector.hpp verbose.cpp verbose.hpp18 VectorUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp leastsquaremin.cpp leastsquaremin.hpp memoryallocator.hpp memoryusageobserver.cpp memoryusageobserver.hpp vectorunittest.cpp vectorunittest.hpp vector.cpp vector.hpp verbose.cpp verbose.hpp 16 19 VectorUnitTest_CXXFLAGS = $(CPPUNIT_CFLAGS) 17 20 VectorUnitTest_LDFLAGS = $(CPPUNIT_LIBS) -ldl 18 TesselationUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp leastsquaremin.cpp leastsquaremin.hpp linkedcell.cpp linkedcell.hpp tesselation.cpp tesselation.hpp tesselationhelpers.cpp tesselationhelpers.hpp tesselationunittest.cpp tesselationunittest.hpp vector.cpp vector.hpp verbose.cpp verbose.hpp21 TesselationUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp leastsquaremin.cpp leastsquaremin.hpp linkedcell.cpp linkedcell.hpp memoryallocator.hpp memoryusageobserver.cpp memoryusageobserver.hpp tesselation.cpp tesselation.hpp tesselationhelpers.cpp tesselationhelpers.hpp tesselationunittest.cpp tesselationunittest.hpp vector.cpp vector.hpp verbose.cpp verbose.hpp 19 22 TesselationUnitTest_CXXFLAGS = $(CPPUNIT_CFLAGS) 20 23 TesselationUnitTest_LDFLAGS = $(CPPUNIT_LIBS) -ldl … … 24 27 25 28 29 MemoryAllocatorUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp memoryallocatorunittest.cpp memoryallocatorunittest.hpp memoryallocator.hpp memoryusageobserver.cpp memoryusageobserver.hpp verbose.cpp verbose.hpp 30 MemoryAllocatorUnitTest_CXXFLAGS = $(CPPUNIT_CFLAGS) 31 MemoryAllocatorUnitTest_LDFLAGS = $(CPPUNIT_LIBS) -ldl 32 33 MemoryUsageObserverUnitTest_SOURCES = defs.hpp helpers.cpp helpers.hpp memoryusageobserverunittest.cpp memoryusageobserverunittest.hpp memoryusageobserver.hpp memoryusageobserver.cpp verbose.cpp verbose.hpp 34 MemoryUsageObserverUnitTest_CXXFLAGS = $(CPPUNIT_CFLAGS) 35 MemoryUsageObserverUnitTest_LDFLAGS = $(CPPUNIT_LIBS) -ldl 36 26 37 EXTRA_DIST = ${molecuilder_DATA} -
Property mode
changed from
-
src/analyzer.cpp
raba92d r13a574 10 10 #include "datacreator.hpp" 11 11 #include "helpers.hpp" 12 #include "memoryallocator.hpp" 12 13 #include "parser.hpp" 13 14 #include "periodentafel.hpp" … … 72 73 return 1; 73 74 } else { 74 dir = (char *) Malloc(sizeof(char)*(strlen(argv[2])+2), "main: *dir");75 dir = Malloc<char>(strlen(argv[2]) + 2, "main: *dir"); 75 76 strcpy(dir, "/"); 76 77 strcat(dir, argv[2]); … … 555 556 // ++++++++++++++++ exit ++++++++++++++++++++++++++++++++++ 556 557 delete(periode); 557 Free( (void **)&dir, "main: *dir");558 Free(&dir); 558 559 cout << "done." << endl; 559 560 return 0; -
src/atom.cpp
raba92d r13a574 6 6 7 7 #include "atom.hpp" 8 #include "memoryallocator.hpp" 8 9 9 10 /************************************* Functions for class atom *************************************/ … … 38 39 previous = NULL; 39 40 next = NULL; 40 father = this; // generally, father is itself41 father = pointer; // generally, father is itself 41 42 Ancestor = NULL; 42 43 GraphNr = -1; … … 53 54 nr = -1; 54 55 sort = &nr; 56 node = &x; 55 57 } 56 58 … … 60 62 atom::~atom() 61 63 { 62 Free ((void **)&ComponentNr, "atom::~atom: *ComponentNr");63 Free ((void **)&Name, "atom::~atom: *Name");64 Free<int>(&ComponentNr, "atom::~atom: *ComponentNr"); 65 Free<char>(&Name, "atom::~atom: *Name"); 64 66 }; 65 67 -
src/boundary.cpp
raba92d r13a574 6 6 7 7 #include "boundary.hpp" 8 #include "memoryallocator.hpp" 8 9 9 10 #include<gsl/gsl_poly.h> -
src/builder.cpp
-
Property mode
changed from
100755
to100644
raba92d r13a574 53 53 #include "ellipsoid.hpp" 54 54 #include "helpers.hpp" 55 #include "memoryusageobserverunittest.hpp" 55 56 #include "molecules.hpp" 56 57 /********************************************* Subsubmenu routine ************************************/ … … 1558 1559 delete(Subgraphs); 1559 1560 for (int i=0;i<FragmentCounter;i++) 1560 Free( (void **)&ListOfLocalAtoms[FragmentCounter], "ParseCommandLineOptions: **ListOfLocalAtoms[]");1561 Free( (void **)&ListOfLocalAtoms, "ParseCommandLineOptions: ***ListOfLocalAtoms");1561 Free(&ListOfLocalAtoms[FragmentCounter]); 1562 Free(&ListOfLocalAtoms); 1562 1563 } 1563 1564 delete(BackEdgeStack); … … 2041 2042 delete(molecules); // also free's all molecules contained 2042 2043 delete(periode); 2043 return j; 2044 cout << Verbose(0) << "Maximum of allocated memory: " 2045 << MemoryUsageObserver::getInstance()->getMaximumUsedMemory() << endl; 2046 cout << Verbose(0) << "Remaining non-freed memory: " 2047 << MemoryUsageObserver::getInstance()->getUsedMemorySize() << endl; 2048 return j; 2044 2049 break; 2045 2050 case 1: // just for -v and -h options 2046 2051 delete(molecules); // also free's all molecules contained 2047 2052 delete(periode); 2053 cout << Verbose(0) << "Maximum of allocated memory: " 2054 << MemoryUsageObserver::getInstance()->getMaximumUsedMemory() << endl; 2055 cout << Verbose(0) << "Remaining non-freed memory: " 2056 << MemoryUsageObserver::getInstance()->getUsedMemorySize() << endl; 2048 2057 return 0; 2058 break; 2059 case 2: // just for -f option 2060 delete(molecules); // also free's all molecules contained 2061 delete(periode); 2062 cout << Verbose(0) << "Maximum of allocated memory: " 2063 << MemoryUsageObserver::getInstance()->getMaximumUsedMemory() << endl; 2064 cout << Verbose(0) << "Remaining non-freed memory: " 2065 << MemoryUsageObserver::getInstance()->getUsedMemorySize() << endl; 2066 return 2; 2049 2067 break; 2050 2068 default: … … 2144 2162 delete(molecules); // also free's all molecules contained 2145 2163 delete(periode); 2164 2165 cout << Verbose(0) << "Maximum of allocated memory: " 2166 << MemoryUsageObserver::getInstance()->getMaximumUsedMemory() << endl; 2167 cout << Verbose(0) << "Remaining non-freed memory: " 2168 << MemoryUsageObserver::getInstance()->getUsedMemorySize() << endl; 2169 2146 2170 return (0); 2147 2171 } -
Property mode
changed from
-
src/config.cpp
raba92d r13a574 6 6 7 7 #include "config.hpp" 8 #include "memoryallocator.hpp" 8 9 9 10 /******************************** Functions for class ConfigFileBuffer **********************/ … … 86 87 return; 87 88 } else 88 buffer = (char **) Malloc(sizeof(char *)*NoLines, "ConfigFileBuffer::ConfigFileBuffer: **buffer");89 buffer = Malloc<char*>(NoLines, "ConfigFileBuffer::ConfigFileBuffer: **buffer"); 89 90 90 91 // scan each line and put into buffer … … 92 93 int i; 93 94 do { 94 buffer[lines] = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "ConfigFileBuffer::ConfigFileBuffer: *buffer[]");95 buffer[lines] = Malloc<char>(MAXSTRINGSIZE, "ConfigFileBuffer::ConfigFileBuffer: *buffer[]"); 95 96 file->getline(buffer[lines], MAXSTRINGSIZE-1); 96 97 i = strlen(buffer[lines]); … … 112 113 { 113 114 for(int i=0;i<NoLines;++i) 114 Free( (void **)&buffer[i], "ConfigFileBuffer::~ConfigFileBuffer: *buffer[]");115 Free( (void **)&buffer, "ConfigFileBuffer::~ConfigFileBuffer: **buffer");116 Free( (void **)&LineMapping, "ConfigFileBuffer::~ConfigFileBuffer: *LineMapping");115 Free(&buffer[i]); 116 Free(&buffer); 117 Free(&LineMapping); 117 118 } 118 119 … … 122 123 void ConfigFileBuffer::InitMapping() 123 124 { 124 LineMapping = (int *) Malloc(sizeof(int)*NoLines, "ConfigFileBuffer::InitMapping: *LineMapping");125 LineMapping = Malloc<int>(NoLines, "ConfigFileBuffer::InitMapping: *LineMapping"); 125 126 for (int i=0;i<NoLines;i++) 126 127 LineMapping[i] = i; … … 163 164 config::config() 164 165 { 165 mainname = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: mainname");166 defaultpath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: defaultpath");167 pseudopotpath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: pseudopotpath");168 databasepath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: databasepath");169 configpath = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: configpath");170 configname = (char *) MallocString(sizeof(char)*MAXSTRINGSIZE,"config constructor: configname");171 ThermostatImplemented = (int *) Malloc((MaxThermostats)*(sizeof(int)), "config constructor: *ThermostatImplemented");172 ThermostatNames = (char **) Malloc((MaxThermostats)*(sizeof(char *)), "config constructor: *ThermostatNames");166 mainname = Malloc<char>(MAXSTRINGSIZE,"config constructor: mainname"); 167 defaultpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: defaultpath"); 168 pseudopotpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: pseudopotpath"); 169 databasepath = Malloc<char>(MAXSTRINGSIZE,"config constructor: databasepath"); 170 configpath = Malloc<char>(MAXSTRINGSIZE,"config constructor: configpath"); 171 configname = Malloc<char>(MAXSTRINGSIZE,"config constructor: configname"); 172 ThermostatImplemented = Malloc<int>(MaxThermostats, "config constructor: *ThermostatImplemented"); 173 ThermostatNames = Malloc<char*>(MaxThermostats, "config constructor: *ThermostatNames"); 173 174 for (int j=0;j<MaxThermostats;j++) 174 ThermostatNames[j] = (char *) MallocString(12*(sizeof(char)), "config constructor: ThermostatNames[]");175 ThermostatNames[j] = Malloc<char>(12, "config constructor: ThermostatNames[]"); 175 176 Thermostat = 4; 176 177 alpha = 0.; … … 263 264 config::~config() 264 265 { 265 Free( (void **)&mainname, "config::~config: *mainname");266 Free( (void **)&defaultpath, "config::~config: *defaultpath");267 Free( (void **)&pseudopotpath, "config::~config: *pseudopotpath");268 Free( (void **)&databasepath, "config::~config: *databasepath");269 Free( (void **)&configpath, "config::~config: *configpath");270 Free( (void **)&configname, "config::~config: *configname");271 Free( (void **)&ThermostatImplemented, "config::~config: *ThermostatImplemented");266 Free(&mainname); 267 Free(&defaultpath); 268 Free(&pseudopotpath); 269 Free(&databasepath); 270 Free(&configpath); 271 Free(&configname); 272 Free(&ThermostatImplemented); 272 273 for (int j=0;j<MaxThermostats;j++) 273 Free( (void **)&ThermostatNames[j], "config::~config: *ThermostatNames[]");274 Free( (void **)&ThermostatNames, "config::~config: **ThermostatNames");274 Free(&ThermostatNames[j]); 275 Free(&ThermostatNames); 275 276 }; 276 277 … … 280 281 void config::InitThermostats(class ConfigFileBuffer *fb) 281 282 { 282 char *thermo = Malloc String(12, "IonsInitRead: thermo");283 char *thermo = Malloc<char>(12, "IonsInitRead: thermo"); 283 284 int verbose = 0; 284 285 … … 347 348 Thermostat = None; 348 349 } 349 Free( (void **)&thermo, "InitThermostats: thermo");350 Free(&thermo); 350 351 }; 351 352 … … 1536 1537 long file_position = file->tellg(); // mark current position 1537 1538 char *dummy1, *dummy, *free_dummy; // pointers in the line that is read in per step 1538 dummy1 = free_dummy = (char *) Malloc(256 * sizeof(char), "config::ParseForParameter: *free_dummy");1539 dummy1 = free_dummy = Malloc<char>(256, "config::ParseForParameter: *free_dummy"); 1539 1540 1540 1541 //fprintf(stderr,"Parsing for %s\n",name); … … 1551 1552 if (file->eof()) { 1552 1553 if ((critical) && (found == 0)) { 1553 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1554 Free(&free_dummy); 1554 1555 //Error(InitReading, name); 1555 1556 fprintf(stderr,"Error:InitReading, critical %s not found\n", name); … … 1559 1560 file->clear(); 1560 1561 file->seekg(file_position, ios::beg); // rewind to start position 1561 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1562 Free(&free_dummy); 1562 1563 return 0; 1563 1564 } … … 1611 1612 if (file->eof()) { 1612 1613 if ((critical) && (found == 0)) { 1613 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1614 Free(&free_dummy); 1614 1615 //Error(InitReading, name); 1615 1616 fprintf(stderr,"Error:InitReading, critical %s not found\n", name); … … 1619 1620 file->clear(); 1620 1621 file->seekg(file_position, ios::beg); // rewind to start position 1621 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1622 Free(&free_dummy); 1622 1623 return 0; 1623 1624 } … … 1660 1661 if (critical) { 1661 1662 if (verbose) fprintf(stderr,"Error: EoL at %i and still missing %i value(s) for parameter %s\n", line, yth-j, name); 1662 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1663 Free(&free_dummy); 1663 1664 //return 0; 1664 1665 exit(255); … … 1668 1669 file->clear(); 1669 1670 file->seekg(file_position, ios::beg); // rewind to start position 1670 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1671 Free(&free_dummy); 1671 1672 return 0; 1672 1673 } … … 1681 1682 file->seekg(file_position, ios::beg); // rewind to start position 1682 1683 } 1683 Free( (void **)&free_dummy, "config::ParseForParameter: *free_dummy");1684 Free(&free_dummy); 1684 1685 return 0; 1685 1686 } … … 1735 1736 } 1736 1737 } 1737 if ((type >= row_int) && (verbose)) fprintf(stderr,"\n"); 1738 Free((void **)&free_dummy, "config::ParseForParameter: *free_dummy"); 1738 if ((type >= row_int) && (verbose)) 1739 fprintf(stderr,"\n"); 1740 Free(&free_dummy); 1739 1741 if (!sequential) { 1740 1742 file->clear(); … … 1814 1816 dummy = strchr(dummy1, '\n'); // set on line end then (whole line = keyword) 1815 1817 //fprintf(stderr,"Error: Cannot find tabs or spaces on line %i in search for %s\n", line, name); 1816 //Free( (void **)&free_dummy);1818 //Free(&free_dummy); 1817 1819 //Error(FileOpenParams, NULL); 1818 1820 } else { -
src/defs.hpp
raba92d r13a574 7 7 #ifndef DEFS_HPP_ 8 8 #define DEFS_HPP_ 9 10 using namespace std;11 9 12 10 #define MYEPSILON 1e-13 //!< machine epsilon precision -
src/helpers.cpp
-
Property mode
changed from
100755
to100644
raba92d r13a574 6 6 7 7 #include "helpers.hpp" 8 #include "memoryusageobserver.hpp" 8 9 9 10 /********************************************** helpful functions *********************************/ … … 34 35 void debug_in(const char *output, const char *file, const int line) {} // print nothing 35 36 #endif 36 37 /** Wrapper for allocating'ing a memory range with *output if it fails.38 * \param size number of chars to alloc for \a *buffer39 * \param *output message if malloc fails40 * \return pointer to memory range41 */42 void * Malloc(size_t size, const char* output)43 {44 void *buffer = NULL;45 buffer = (void *)malloc(size); // alloc46 if (buffer == NULL)47 cout << Verbose(0) << "Malloc failed - pointer is NULL: " << output << endl;48 return(buffer);49 };50 51 /** Wrapper for allocating'ing a memory range with *output if it fails.52 * \param size number of chars to alloc for \a *buffer53 * \param *output message if malloc fails54 * \return pointer to memory range55 */56 void * Calloc(size_t size, const char* output)57 {58 void *buffer = NULL;59 buffer = (void *)calloc(size, (size_t)0); // alloc60 if (buffer == NULL)61 cout << Verbose(0) << "Calloc failed - pointer is NULL: " << output << endl;62 return(buffer);63 };64 65 /** Wrapper for reallocating'ing a memory range with *output if it fails.66 * \param *OldPointer pointer to old memory range67 * \param size number of chars to alloc for \a *buffer68 * \param *output message if malloc fails69 * \return pointer to memory range70 */71 void * ReAlloc(void * OldPointer, size_t size, const char* output)72 {73 void *buffer = NULL;74 if (OldPointer == NULL)75 //cout << Verbose(0) << "ReAlloc impossible - old is NULL: " << output << endl;76 buffer = (void *)malloc(size); // malloc77 else78 buffer = (void *)realloc(OldPointer, size); // realloc79 if (buffer == NULL)80 cout << Verbose(0) << "ReAlloc failed - new is NULL: " << output << endl;81 return(buffer);82 };83 84 /** Wrapper for free'ing an allocated memory range with *output if it fails.85 * \param *buffer pointer to buffer to be free'd86 * \param *output message if free fails87 */88 void Free(void ** buffer, const char* output)89 {90 if (*buffer == NULL) {91 //cout << Verbose(5) << "Free not necesary: " << output << endl;92 } else {93 free(*buffer);94 *buffer = NULL;95 }96 };97 98 /** Malloc string array and set its length to the allocated length.99 * \param *output message if malloc fails100 * \param size number of chars to alloc for \a *buffer101 * \return pointer to string array102 */103 char* MallocString(size_t size, const char* output)104 {105 size_t i;106 char *buffer;107 buffer = (char *)malloc(sizeof(char) * (size+1)); // alloc108 if (buffer == NULL)109 cout << Verbose(0) << output << endl;110 for (i=size;i--;) // reset111 buffer[i] = i % 2 == 0 ? 'p': 'c';112 buffer[size] = '\0'; // and set length marker on its end113 return(buffer);114 }115 37 116 38 /** modulo operator for doubles. … … 170 92 } 171 93 // allocate string 172 returnstring = (char *) Malloc(sizeof(char)*(order+2), "FixedDigitNumber: *returnstring");94 returnstring = Malloc<char>(order + 2, "FixedDigitNumber: *returnstring"); 173 95 // terminate and fill string array from end backward 174 96 returnstring[order] = '\0'; … … 196 118 }; 197 119 120 /** 121 * Allocates a memory range using malloc(). 122 * Prints the provided error message in case of a failure. 123 * 124 * \param number of memory slices of type X to allocate 125 * \param failure message which is printed if the allocation fails 126 * \return pointer to the allocated memory range, will be NULL if a failure occurred 127 */ 128 template <> char* Malloc<char>(size_t size, const char* output) 129 { 130 char* buffer = NULL; 131 buffer = (char*) malloc(sizeof(char) * (size + 1)); 132 for (size_t i = size; i--;) 133 buffer[i] = (i % 2 == 0) ? 'p': 'c'; 134 buffer[size] = '\0'; 198 135 136 if (buffer != NULL) { 137 MemoryUsageObserver::getInstance()->addMemory(buffer, size); 138 } else { 139 cout << Verbose(0) << "Malloc for datatype " << typeid(char).name() 140 << " failed - pointer is NULL: " << output << endl; 141 } 142 143 return buffer; 144 }; 145 146 -
Property mode
changed from
-
src/helpers.hpp
raba92d r13a574 23 23 #include "defs.hpp" 24 24 #include "verbose.hpp" 25 #include "memoryallocator.hpp" 25 26 26 27 /********************************************** helpful functions *********************************/ … … 50 51 void flip(double *x, double *y); 51 52 int pot(int base, int n); 52 void * Malloc(size_t size, const char* output);53 void * Calloc(size_t size, const char* output);54 void * ReAlloc(void * OldPointer, size_t size, const char* output);55 char* MallocString(size_t size, const char* output);56 void Free(void ** buffer, const char* output);53 //void * Malloc(size_t size, const char* output); 54 //void * Calloc(size_t size, const char* output); 55 //void * ReAlloc(void * OldPointer, size_t size, const char* output); 56 //char* MallocString(size_t size, const char* output); 57 //void Free(void ** buffer, const char* output); 57 58 char *FixedDigitNumber(const int FragmentNumber, const int digits); 58 59 bool IsValidNumber( const char *string); … … 93 94 94 95 // allocat and fill 95 LookupTable = (T **) Malloc(sizeof(T *)*count, "CreateFatherLookupTable - **LookupTable");96 LookupTable = Malloc<T*>(count, "CreateFatherLookupTable - **LookupTable"); 96 97 if (LookupTable == NULL) { 97 98 cerr << "LookupTable memory allocation failed!" << endl; … … 273 274 274 275 276 275 277 #endif /*HELPERS_HPP_*/ -
src/joiner.cpp
raba92d r13a574 10 10 #include "datacreator.hpp" 11 11 #include "helpers.hpp" 12 #include "memoryallocator.hpp" 12 13 #include "parser.hpp" 13 14 #include "periodentafel.hpp" … … 55 56 return 1; 56 57 } else { 57 dir = (char *) Malloc(sizeof(char)*(strlen(argv[2])+2), "main: *dir");58 dir = Malloc<char>(strlen(argv[2]) + 2, "main: *dir"); 58 59 strcpy(dir, "/"); 59 60 strcat(dir, argv[2]); … … 240 241 // exit 241 242 delete(periode); 242 Free( (void **)&dir, "main: *dir");243 Free(&dir); 243 244 cout << "done." << endl; 244 245 return 0; -
src/moleculelist.cpp
raba92d r13a574 8 8 #include "config.hpp" 9 9 #include "molecules.hpp" 10 #include "memoryallocator.hpp" 10 11 11 12 /*********************************** Functions for class MoleculeListClass *************************/ … … 412 413 413 414 // 0b. allocate memory for constants 414 FitConstant = (double ***) Malloc(sizeof(double **) *3, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant");415 FitConstant = Malloc<double**>(3, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant"); 415 416 for (int k = 0; k < 3; k++) { 416 FitConstant[k] = (double **) Malloc(sizeof(double *) *a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]");417 FitConstant[k] = Malloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]"); 417 418 for (int i = a; i--;) { 418 FitConstant[k][i] = (double *) Malloc(sizeof(double) *b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]");419 FitConstant[k][i] = Malloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]"); 419 420 } 420 421 } … … 461 462 462 463 // 0d. allocate final correction matrix 463 correction = (double **) Malloc(sizeof(double *) *a, "MoleculeListClass::AddHydrogenCorrection: **correction");464 correction = Malloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **correction"); 464 465 for (int i = a; i--;) 465 correction[i] = (double *) Malloc(sizeof(double) *b, "MoleculeListClass::AddHydrogenCorrection: *correction[]");466 correction[i] = Malloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *correction[]"); 466 467 467 468 // 1a. go through every molecule in the list … … 537 538 output.close(); 538 539 // 6. free memory of parsed matrices 539 FitConstant = (double ***) Malloc(sizeof(double **) *a, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant");540 FitConstant = Malloc<double**>(a, "MoleculeListClass::AddHydrogenCorrection: ***FitConstant"); 540 541 for (int k = 0; k < 3; k++) { 541 FitConstant[k] = (double **) Malloc(sizeof(double *) *a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]");542 FitConstant[k] = Malloc<double*>(a, "MoleculeListClass::AddHydrogenCorrection: **FitConstant[]"); 542 543 for (int i = a; i--;) { 543 FitConstant[k][i] = (double *) Malloc(sizeof(double) *b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]");544 FitConstant[k][i] = Malloc<double>(b, "MoleculeListClass::AddHydrogenCorrection: *FitConstant[][]"); 544 545 } 545 546 } … … 702 703 //outputFragment.clear(); 703 704 delete (FragmentNumber); 704 //Free( (void **)&FragmentNumber, "MoleculeListClass::OutputConfigForListOfFragments: *FragmentNumber");705 //Free(&FragmentNumber); 705 706 } 706 707 cout << " done." << endl; … … 845 846 if ((FreeList) && (ListOfLocalAtoms != NULL)) { 846 847 // free the index lookup list 847 Free( (void **) &ListOfLocalAtoms[FragmentCounter], "MoleculeLeafClass::FillBondStructureFromReference - **ListOfLocalAtoms[]");848 Free(&ListOfLocalAtoms[FragmentCounter]); 848 849 if (FragmentCounter == 0) // first fragments frees the initial pointer to list 849 Free( (void **) &ListOfLocalAtoms, "MoleculeLeafClass::FillBondStructureFromReference - ***ListOfLocalAtoms");850 Free(&ListOfLocalAtoms); 850 851 } 851 852 FragmentCounter--; … … 910 911 if (ListOfLocalAtoms == NULL) { // allocated initial pointer 911 912 // allocate and set each field to NULL 912 ListOfLocalAtoms = (atom ***) Malloc(sizeof(atom **) *Counter, "MoleculeLeafClass::FillBondStructureFromReference - ***ListOfLocalAtoms");913 ListOfLocalAtoms = Malloc<atom**>(Counter, "MoleculeLeafClass::FillBondStructureFromReference - ***ListOfLocalAtoms"); 913 914 if (ListOfLocalAtoms != NULL) { 914 915 for (int i = Counter; i--;) … … 954 955 if (FragmentList == NULL) { 955 956 KeySetCounter = Count(); 956 FragmentList = (Graph **) Malloc(sizeof(Graph *) *KeySetCounter, "MoleculeLeafClass::AssignKeySetsToFragment - **FragmentList");957 FragmentList = Malloc<Graph*>(KeySetCounter, "MoleculeLeafClass::AssignKeySetsToFragment - **FragmentList"); 957 958 for (int i = KeySetCounter; i--;) 958 959 FragmentList[i] = NULL; … … 990 991 if ((FreeList) && (ListOfLocalAtoms != NULL)) { 991 992 // free the index lookup list 992 Free( (void **) &ListOfLocalAtoms[FragmentCounter], "MoleculeLeafClass::AssignKeySetsToFragment - **ListOfLocalAtoms[]");993 Free(&ListOfLocalAtoms[FragmentCounter]); 993 994 if (FragmentCounter == 0) // first fragments frees the initial pointer to list 994 Free( (void **) &ListOfLocalAtoms, "MoleculeLeafClass::AssignKeySetsToFragment - ***ListOfLocalAtoms");995 Free(&ListOfLocalAtoms); 995 996 } 996 997 *out << Verbose(1) << "End of AssignKeySetsToFragment." << endl; -
src/molecules.cpp
raba92d r13a574 6 6 7 7 #include "config.hpp" 8 #include "memoryallocator.hpp" 8 9 #include "molecules.hpp" 9 10 … … 55 56 if (ListOfBondsPerAtom != NULL) 56 57 for(int i=AtomCount;i--;) 57 Free( (void **)&ListOfBondsPerAtom[i], "molecule::~molecule: ListOfBondsPerAtom[i]");58 Free( (void **)&ListOfBondsPerAtom, "molecule::~molecule: ListOfBondsPerAtom");59 Free( (void **)&NumberOfBondsPerAtom, "molecule::~molecule: NumberOfBondsPerAtom");58 Free(&ListOfBondsPerAtom[i]); 59 Free(&ListOfBondsPerAtom); 60 Free(&NumberOfBondsPerAtom); 60 61 if (TesselStruct != NULL) 61 62 delete(TesselStruct); … … 163 164 NoNonHydrogen++; 164 165 if (pointer->Name == NULL) { 165 Free( (void **)&pointer->Name, "molecule::AddAtom: *pointer->Name");166 pointer->Name = (char *) Malloc(sizeof(char)*6, "molecule::AddAtom: *pointer->Name");166 Free(&pointer->Name); 167 pointer->Name = Malloc<char>(6, "molecule::AddAtom: *pointer->Name"); 167 168 sprintf(pointer->Name, "%2s%02d", pointer->type->symbol, pointer->nr+1); 168 169 } … … 176 177 * Increases molecule::last_atom and gives last number to added atom. 177 178 * \param *pointer allocated and set atom 178 * \return true - succeeded, false - atom not found in list179 * \return pointer to the newly added atom 179 180 */ 180 181 atom * molecule::AddCopyAtom(atom *pointer) … … 182 183 if (pointer != NULL) { 183 184 atom *walker = new atom(pointer); 184 walker->Name = (char *) Malloc(sizeof(char)*strlen(pointer->Name)+1, "atom::atom: *Name");185 walker->Name = Malloc<char>(strlen(pointer->Name) + 1, "atom::atom: *Name"); 185 186 strcpy (walker->Name, pointer->Name); 186 187 walker->nr = last_atom++; // increase number within molecule … … 267 268 Orthovector1.MatrixMultiplication(matrix); 268 269 InBondvector.SubtractVector(&Orthovector1); // subtract just the additional translation 269 Free( (void **)&matrix, "molecule::AddHydrogenReplacementAtom: *matrix");270 Free(&matrix); 270 271 bondlength = InBondvector.Norm(); 271 272 // *out << Verbose(4) << "Corrected InBondvector is now: "; … … 612 613 return copy; 613 614 }; 615 616 617 /** 618 * Copies all atoms of a molecule which are within the defined parallelepiped. 619 * 620 * @param offest for the origin of the parallelepiped 621 * @param three vectors forming the matrix that defines the shape of the parallelpiped 622 */ 623 molecule* molecule::CopyMoleculeFromSubRegion(Vector offset, double *parallelepiped) { 624 molecule *copy = new molecule(elemente); 625 atom *Walker = start; 626 627 while(Walker->next != end) { 628 Walker = Walker->next; 629 if (Walker->x.IsInParallelepiped(offset, parallelepiped)) { 630 cout << "Adding atom " << *Walker << endl; 631 copy->AddCopyAtom(Walker); 632 } 633 } 634 635 //TODO: copy->BuildInducedSubgraph((ofstream *)&cout, this); 636 637 return copy; 638 } 614 639 615 640 /** Adds a bond to a the molecule specified by two atoms, \a *first and \a *second. … … 1060 1085 } 1061 1086 } while (!flag); 1062 Free( (void **)&matrix, "molecule::DetermineCenter: *matrix");1087 Free(&matrix); 1063 1088 Center.Scale(1./(double)AtomCount); 1064 1089 }; … … 1319 1344 { 1320 1345 stringstream zeile1, zeile2; 1321 int *DoubleList = (int *) Malloc(Nr*sizeof(int), "PrintPermutationMap: *DoubleList");1346 int *DoubleList = Malloc<int>(Nr, "PrintPermutationMap: *DoubleList"); 1322 1347 int doubles = 0; 1323 1348 for (int i=0;i<Nr;i++) … … 1334 1359 doubles++; 1335 1360 // *out << "Found " << doubles << " Doubles." << endl; 1336 Free( (void **)&DoubleList, "PrintPermutationMap: *DoubleList");1361 Free(&DoubleList); 1337 1362 // *out << zeile1.str() << endl << zeile2.str() << endl; 1338 1363 }; … … 1368 1393 { 1369 1394 double Potential, OldPotential, OlderPotential; 1370 PermutationMap = (atom **) Malloc(AtomCount*sizeof(atom *), "molecule::MinimiseConstrainedPotential: **PermutationMap");1371 DistanceMap **DistanceList = (DistanceMap **) Malloc(AtomCount*sizeof(DistanceMap *), "molecule::MinimiseConstrainedPotential: **DistanceList");1372 DistanceMap::iterator *DistanceIterators = (DistanceMap::iterator *) Malloc(AtomCount*sizeof(DistanceMap::iterator), "molecule::MinimiseConstrainedPotential: *DistanceIterators");1373 int *DoubleList = (int *) Malloc(AtomCount*sizeof(int), "molecule::MinimiseConstrainedPotential: *DoubleList");1374 DistanceMap::iterator *StepList = (DistanceMap::iterator *) Malloc(AtomCount*sizeof(DistanceMap::iterator), "molecule::MinimiseConstrainedPotential: *StepList");1395 PermutationMap = Malloc<atom*>(AtomCount, "molecule::MinimiseConstrainedPotential: **PermutationMap"); 1396 DistanceMap **DistanceList = Malloc<DistanceMap*>(AtomCount, "molecule::MinimiseConstrainedPotential: **DistanceList"); 1397 DistanceMap::iterator *DistanceIterators = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: *DistanceIterators"); 1398 int *DoubleList = Malloc<int>(AtomCount, "molecule::MinimiseConstrainedPotential: *DoubleList"); 1399 DistanceMap::iterator *StepList = Malloc<DistanceMap::iterator>(AtomCount, "molecule::MinimiseConstrainedPotential: *StepList"); 1375 1400 double constants[3]; 1376 1401 int round; … … 1448 1473 } 1449 1474 *out << Verbose(1) << "done." << endl; 1450 Free( (void **)&DoubleList, "molecule::MinimiseConstrainedPotential: *DoubleList");1475 Free(&DoubleList); 1451 1476 // argument minimise the constrained potential in this injective PermutationMap 1452 1477 *out << Verbose(1) << "Argument minimising the PermutationMap, at current potential " << OldPotential << " ... " << endl; … … 1529 1554 for (int i=AtomCount; i--;) 1530 1555 DistanceList[i]->clear(); 1531 Free( (void **)&DistanceList, "molecule::MinimiseConstrainedPotential: **DistanceList");1532 Free( (void **)&DistanceIterators, "molecule::MinimiseConstrainedPotential: *DistanceIterators");1556 Free(&DistanceList); 1557 Free(&DistanceIterators); 1533 1558 return ConstrainedPotential(out, PermutationMap, startstep, endstep, constants, IsAngstroem); 1534 1559 }; … … 1581 1606 MinimiseConstrainedPotential(out, PermutationMap, startstep, endstep, configuration.GetIsAngstroem()); 1582 1607 else { 1583 PermutationMap = (atom **) Malloc(AtomCount*sizeof(atom *), "molecule::LinearInterpolationBetweenConfiguration: **PermutationMap");1608 PermutationMap = Malloc<atom *>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: **PermutationMap"); 1584 1609 Walker = start; 1585 1610 while (Walker->next != end) { … … 1637 1662 1638 1663 // store the list to single step files 1639 int *SortIndex = (int *) Malloc(AtomCount*sizeof(int), "molecule::LinearInterpolationBetweenConfiguration: *SortIndex");1664 int *SortIndex = Malloc<int>(AtomCount, "molecule::LinearInterpolationBetweenConfiguration: *SortIndex"); 1640 1665 for (int i=AtomCount; i--; ) 1641 1666 SortIndex[i] = i; … … 1643 1668 1644 1669 // free and return 1645 Free( (void **)&PermutationMap, "molecule::MinimiseConstrainedPotential: *PermutationMap");1670 Free(&PermutationMap); 1646 1671 delete(MoleculePerStep); 1647 1672 return status; … … 1702 1727 ConstrainedPotentialEnergy = MinimiseConstrainedPotential(out, PermutationMap,configuration.DoConstrainedMD, 0, configuration.GetIsAngstroem()); 1703 1728 EvaluateConstrainedForces(out, configuration.DoConstrainedMD, 0, PermutationMap, &Force); 1704 Free( (void **)&PermutationMap, "molecule::MinimiseConstrainedPotential: *PermutationMap");1729 Free(&PermutationMap); 1705 1730 } 1706 1731 … … 2402 2427 if (Walker->type->Z != 1) // count non-hydrogen atoms whilst at it 2403 2428 NoNonHydrogen++; 2404 Free( (void **)&Walker->Name, "molecule::CountAtoms: *walker->Name");2405 Walker->Name = (char *) Malloc(sizeof(char)*6, "molecule::CountAtoms: *walker->Name");2429 Free(&Walker->Name); 2430 Walker->Name = Malloc<char>(6, "molecule::CountAtoms: *walker->Name"); 2406 2431 sprintf(Walker->Name, "%2s%02d", Walker->type->symbol, Walker->nr+1); 2407 2432 *out << "Naming atom nr. " << Walker->nr << " " << Walker->Name << "." << endl; … … 2614 2639 NumberCells = divisor[0]*divisor[1]*divisor[2]; 2615 2640 *out << Verbose(1) << "Allocating " << NumberCells << " cells." << endl; 2616 CellList = (molecule **) Malloc(sizeof(molecule *)*NumberCells, "molecule::CreateAdjacencyList - ** CellList");2641 CellList = Malloc<molecule*>(NumberCells, "molecule::CreateAdjacencyList - ** CellList"); 2617 2642 for (int i=NumberCells;i--;) 2618 2643 CellList[i] = NULL; … … 2696 2721 delete(CellList[i]); 2697 2722 } 2698 Free( (void **)&CellList, "molecule::CreateAdjacencyList - ** CellList");2723 Free(&CellList); 2699 2724 2700 2725 // create the adjacency list per atom … … 2761 2786 *out << Verbose(1) << "AtomCount is " << AtomCount << ", thus no bonds, no connections!." << endl; 2762 2787 *out << Verbose(0) << "End of CreateAdjacencyList." << endl; 2763 Free( (void **)&matrix, "molecule::CreateAdjacencyList: *matrix");2788 Free(&matrix); 2764 2789 2765 2790 }; … … 2971 2996 void molecule::CyclicStructureAnalysis(ofstream *out, class StackClass<bond *> * BackEdgeStack, int *&MinimumRingSize) 2972 2997 { 2973 atom **PredecessorList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::CyclicStructureAnalysis: **PredecessorList");2974 int *ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CyclicStructureAnalysis: *ShortestPathList");2975 enum Shading *ColorList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::CyclicStructureAnalysis: *ColorList");2998 atom **PredecessorList = Malloc<atom*>(AtomCount, "molecule::CyclicStructureAnalysis: **PredecessorList"); 2999 int *ShortestPathList = Malloc<int>(AtomCount, "molecule::CyclicStructureAnalysis: *ShortestPathList"); 3000 enum Shading *ColorList = Malloc<enum Shading>(AtomCount, "molecule::CyclicStructureAnalysis: *ColorList"); 2976 3001 class StackClass<atom *> *BFSStack = new StackClass<atom *> (AtomCount); // will hold the current ring 2977 3002 class StackClass<atom *> *TouchedStack = new StackClass<atom *> (AtomCount); // contains all "touched" atoms (that need to be reset after BFS loop) … … 3164 3189 *out << Verbose(1) << "No rings were detected in the molecular structure." << endl; 3165 3190 3166 Free( (void **)&PredecessorList, "molecule::CyclicStructureAnalysis: **PredecessorList");3167 Free( (void **)&ShortestPathList, "molecule::CyclicStructureAnalysis: **ShortestPathList");3168 Free( (void **)&ColorList, "molecule::CyclicStructureAnalysis: **ColorList");3191 Free(&PredecessorList); 3192 Free(&ShortestPathList); 3193 Free(&ColorList); 3169 3194 delete(BFSStack); 3170 3195 }; … … 3210 3235 Walker = Walker->next; 3211 3236 if (Walker->ComponentNr != NULL) 3212 Free( (void **)&Walker->ComponentNr, "molecule::InitComponentNumbers: **Walker->ComponentNr");3213 Walker->ComponentNr = (int *) Malloc(sizeof(int)*NumberOfBondsPerAtom[Walker->nr], "molecule::InitComponentNumbers: *Walker->ComponentNr");3237 Free(&Walker->ComponentNr); 3238 Walker->ComponentNr = Malloc<int>(NumberOfBondsPerAtom[Walker->nr], "molecule::InitComponentNumbers: *Walker->ComponentNr"); 3214 3239 for (int i=NumberOfBondsPerAtom[Walker->nr];i--;) 3215 3240 Walker->ComponentNr[i] = -1; … … 3334 3359 int NumberOfFragments = 0; 3335 3360 double TEFactor; 3336 char *filename = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::ParseKeySetFile - filename");3361 char *filename = Malloc<char>(MAXSTRINGSIZE, "molecule::ParseKeySetFile - filename"); 3337 3362 3338 3363 if (FragmentList == NULL) { // check list pointer … … 3346 3371 if (InputFile != NULL) { 3347 3372 // each line represents a new fragment 3348 char *buffer = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::ParseKeySetFile - *buffer");3373 char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::ParseKeySetFile - *buffer"); 3349 3374 // 1. parse keysets and insert into temp. graph 3350 3375 while (!InputFile.eof()) { … … 3361 3386 InputFile.close(); 3362 3387 InputFile.clear(); 3363 Free( (void **)&buffer, "molecule::ParseKeySetFile - *buffer");3388 Free(&buffer); 3364 3389 *out << Verbose(1) << "done." << endl; 3365 3390 } else { … … 3394 3419 3395 3420 // free memory 3396 Free( (void **)&filename, "molecule::ParseKeySetFile - filename");3421 Free(&filename); 3397 3422 3398 3423 return status; … … 3501 3526 stringstream filename; 3502 3527 bool status = true; 3503 char *buffer = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::CheckAdjacencyFileAgainstMolecule: *buffer");3528 char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::CheckAdjacencyFileAgainstMolecule: *buffer"); 3504 3529 3505 3530 filename << path << "/" << FRAGMENTPREFIX << ADJACENCYFILE; … … 3509 3534 // allocate storage structure 3510 3535 int NonMatchNumber = 0; // will number of atoms with differing bond structure 3511 int *CurrentBonds = (int *) Malloc(sizeof(int)*8, "molecule::CheckAdjacencyFileAgainstMolecule - CurrentBonds"); // contains parsed bonds of current atom3536 int *CurrentBonds = Malloc<int>(8, "molecule::CheckAdjacencyFileAgainstMolecule - CurrentBonds"); // contains parsed bonds of current atom 3512 3537 int CurrentBondsOfAtom; 3513 3538 … … 3554 3579 } else 3555 3580 *out << Verbose(1) << "done: Not equal by " << NonMatchNumber << " atoms." << endl; 3556 Free( (void **)&CurrentBonds, "molecule::CheckAdjacencyFileAgainstMolecule - **CurrentBonds");3581 Free(&CurrentBonds); 3557 3582 } else { 3558 3583 *out << Verbose(1) << "Adjacency file not found." << endl; … … 3560 3585 } 3561 3586 *out << endl; 3562 Free( (void **)&buffer, "molecule::CheckAdjacencyFileAgainstMolecule: *buffer");3587 Free(&buffer); 3563 3588 3564 3589 return status; … … 3588 3613 return false; 3589 3614 // parse the EnergyPerFragment file 3590 char *buffer = (char *) Malloc(sizeof(char)*MAXSTRINGSIZE, "molecule::CheckOrderAtSite: *buffer");3615 char *buffer = Malloc<char>(MAXSTRINGSIZE, "molecule::CheckOrderAtSite: *buffer"); 3591 3616 sprintf(buffer, "%s/%s%s.dat", path, FRAGMENTPREFIX, ENERGYPERFRAGMENT); 3592 3617 InputFile.open(buffer, ios::in); … … 3695 3720 } 3696 3721 } 3697 Free( (void **)&buffer, "molecule::CheckOrderAtSite: *buffer");3722 Free(&buffer); 3698 3723 // pick a given number of highest values and set AtomMask 3699 3724 } else { // global increase of Bond Order … … 3748 3773 return false; 3749 3774 } 3750 SortIndex = (int *) Malloc(sizeof(int)*AtomCount, "molecule::FragmentMolecule: *SortIndex");3775 SortIndex = Malloc<int>(AtomCount, "molecule::FragmentMolecule: *SortIndex"); 3751 3776 for(int i=AtomCount;i--;) 3752 3777 SortIndex[i] = -1; … … 3822 3847 // === compare it with adjacency file === 3823 3848 FragmentationToDo = FragmentationToDo && CheckAdjacencyFileAgainstMolecule(out, configuration->configpath, ListOfAtoms); 3824 Free( (void **)&ListOfAtoms, "molecule::FragmentMolecule - **ListOfAtoms");3849 Free(&ListOfAtoms); 3825 3850 3826 3851 // ===== 2. perform a DFS analysis to gather info on cyclic structure and a list of disconnected subgraphs ===== … … 3911 3936 delete(Subgraphs); 3912 3937 } 3913 Free( (void **)&FragmentList, "molecule::FragmentMolecule - **FragmentList");3938 Free(&FragmentList); 3914 3939 3915 3940 // ===== 8b. gather keyset lists (graphs) from all subgraphs and transform into MoleculeListClass ===== … … 3958 3983 *out << Verbose(1) << "Freeing bond memory" << endl; 3959 3984 delete(FragmentList); // remove bond molecule from memory 3960 Free( (void **)&SortIndex, "molecule::FragmentMolecule: *SortIndex");3985 Free(&SortIndex); 3961 3986 } else 3962 3987 *out << Verbose(1) << "FragmentList is zero on return, splitting failed." << endl; … … 4046 4071 bool molecule::ParseOrderAtSiteFromFile(ofstream *out, char *path) 4047 4072 { 4048 unsigned char *OrderArray = (unsigned char *) Malloc(sizeof(unsigned char)*AtomCount, "molecule::ParseOrderAtSiteFromFile - *OrderArray");4049 bool *MaxArray = (bool *) Malloc(sizeof(bool)*AtomCount, "molecule::ParseOrderAtSiteFromFile - *MaxArray");4073 unsigned char *OrderArray = Malloc<unsigned char>(AtomCount, "molecule::ParseOrderAtSiteFromFile - *OrderArray"); 4074 bool *MaxArray = Malloc<bool>(AtomCount, "molecule::ParseOrderAtSiteFromFile - *MaxArray"); 4050 4075 bool status; 4051 4076 int AtomNr, value; … … 4088 4113 status = false; 4089 4114 } 4090 Free( (void **)&OrderArray, "molecule::ParseOrderAtSiteFromFile - *OrderArray");4091 Free( (void **)&MaxArray, "molecule::ParseOrderAtSiteFromFile - *MaxArray");4115 Free(&OrderArray); 4116 Free(&MaxArray); 4092 4117 4093 4118 *out << Verbose(1) << "End of ParseOrderAtSiteFromFile" << endl; … … 4112 4137 if (ListOfBondsPerAtom != NULL) { 4113 4138 for(int i=AtomCount;i--;) 4114 Free( (void **)&ListOfBondsPerAtom[i], "molecule::CreateListOfBondsPerAtom: ListOfBondsPerAtom[i]");4115 Free( (void **)&ListOfBondsPerAtom, "molecule::CreateListOfBondsPerAtom: ListOfBondsPerAtom");4139 Free(&ListOfBondsPerAtom[i]); 4140 Free(&ListOfBondsPerAtom); 4116 4141 } 4117 4142 if (NumberOfBondsPerAtom != NULL) 4118 Free( (void **)&NumberOfBondsPerAtom, "molecule::CreateListOfBondsPerAtom: NumberOfBondsPerAtom");4119 ListOfBondsPerAtom = (bond ***) Malloc(sizeof(bond **)*AtomCount, "molecule::CreateListOfBondsPerAtom: ***ListOfBondsPerAtom");4120 NumberOfBondsPerAtom = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CreateListOfBondsPerAtom: *NumberOfBondsPerAtom");4143 Free(&NumberOfBondsPerAtom); 4144 ListOfBondsPerAtom = Malloc<bond**>(AtomCount, "molecule::CreateListOfBondsPerAtom: ***ListOfBondsPerAtom"); 4145 NumberOfBondsPerAtom = Malloc<int>(AtomCount, "molecule::CreateListOfBondsPerAtom: *NumberOfBondsPerAtom"); 4121 4146 4122 4147 // reset bond counts per atom … … 4132 4157 for(int i=AtomCount;i--;) { 4133 4158 // allocate list of bonds per atom 4134 ListOfBondsPerAtom[i] = (bond **) Malloc(sizeof(bond *)*NumberOfBondsPerAtom[i], "molecule::CreateListOfBondsPerAtom: **ListOfBondsPerAtom[]");4159 ListOfBondsPerAtom[i] = Malloc<bond*>(NumberOfBondsPerAtom[i], "molecule::CreateListOfBondsPerAtom: **ListOfBondsPerAtom[]"); 4135 4160 // clear the list again, now each NumberOfBondsPerAtom marks current free field 4136 4161 NumberOfBondsPerAtom[i] = 0; … … 4174 4199 void molecule::BreadthFirstSearchAdd(ofstream *out, molecule *Mol, atom **&AddedAtomList, bond **&AddedBondList, atom *Root, bond *Bond, int BondOrder, bool IsAngstroem) 4175 4200 { 4176 atom **PredecessorList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::BreadthFirstSearchAdd: **PredecessorList");4177 int *ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::BreadthFirstSearchAdd: *ShortestPathList");4178 enum Shading *ColorList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::BreadthFirstSearchAdd: *ColorList");4201 atom **PredecessorList = Malloc<atom*>(AtomCount, "molecule::BreadthFirstSearchAdd: **PredecessorList"); 4202 int *ShortestPathList = Malloc<int>(AtomCount, "molecule::BreadthFirstSearchAdd: *ShortestPathList"); 4203 enum Shading *ColorList = Malloc<enum Shading>(AtomCount, "molecule::BreadthFirstSearchAdd: *ColorList"); 4179 4204 class StackClass<atom *> *AtomStack = new StackClass<atom *>(AtomCount); 4180 4205 atom *Walker = NULL, *OtherAtom = NULL; … … 4281 4306 *out << Verbose(1) << "Coloring Walker " << Walker->Name << " black." << endl; 4282 4307 } 4283 Free( (void **)&PredecessorList, "molecule::BreadthFirstSearchAdd: **PredecessorList");4284 Free( (void **)&ShortestPathList, "molecule::BreadthFirstSearchAdd: **ShortestPathList");4285 Free( (void **)&ColorList, "molecule::BreadthFirstSearchAdd: **ColorList");4308 Free(&PredecessorList); 4309 Free(&ShortestPathList); 4310 Free(&ColorList); 4286 4311 delete(AtomStack); 4287 4312 }; … … 4300 4325 atom *Walker = NULL, *OtherAtom = NULL; 4301 4326 bool status = true; 4302 atom **ParentList = (atom **) Malloc(sizeof(atom *)*Father->AtomCount, "molecule::BuildInducedSubgraph: **ParentList");4327 atom **ParentList = Malloc<atom*>(Father->AtomCount, "molecule::BuildInducedSubgraph: **ParentList"); 4303 4328 4304 4329 *out << Verbose(2) << "Begin of BuildInducedSubgraph." << endl; … … 4339 4364 } 4340 4365 4341 Free( (void **)&ParentList, "molecule::BuildInducedSubgraph: **ParentList");4366 Free(&ParentList); 4342 4367 *out << Verbose(2) << "End of BuildInducedSubgraph." << endl; 4343 4368 return status; … … 4382 4407 { 4383 4408 atom *Runner = NULL, *FatherOfRunner = NULL, *OtherFather = NULL; 4384 atom **SonList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::StoreFragmentFromStack: **SonList");4409 atom **SonList = Malloc<atom*>(AtomCount, "molecule::StoreFragmentFromStack: **SonList"); 4385 4410 molecule *Leaf = new molecule(elemente); 4386 4411 bool LonelyFlag = false; … … 4452 4477 Leaf->CreateListOfBondsPerAtom(out); 4453 4478 //Leaflet->Leaf->ScanForPeriodicCorrection(out); 4454 Free( (void **)&SonList, "molecule::StoreFragmentFromStack: **SonList");4479 Free(&SonList); 4455 4480 // *out << Verbose(1) << "End of StoreFragmentFromKeyset." << endl; 4456 4481 return Leaf; … … 4473 4498 MoleculeListClass * molecule::CreateListOfUniqueFragmentsOfOrder(ofstream *out, int Order, config *configuration) 4474 4499 { 4475 atom **PredecessorList = (atom **) Malloc(sizeof(atom *)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: **PredecessorList");4476 int *ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ShortestPathList");4477 int *Labels = (int *) Malloc(sizeof(int)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *Labels");4478 enum Shading *ColorVertexList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorList");4479 enum Shading *ColorEdgeList = (enum Shading *) Malloc(sizeof(enum Shading)*BondCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorBondList");4500 atom **PredecessorList = Malloc<atom*>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: **PredecessorList"); 4501 int *ShortestPathList = Malloc<int>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ShortestPathList"); 4502 int *Labels = Malloc<int>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *Labels"); 4503 enum Shading *ColorVertexList = Malloc<enum Shading>(AtomCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorList"); 4504 enum Shading *ColorEdgeList = Malloc<enum Shading>(BondCount, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorBondList"); 4480 4505 StackClass<atom *> *RootStack = new StackClass<atom *>(AtomCount); 4481 4506 StackClass<atom *> *TouchedStack = new StackClass<atom *>((int)pow(4,Order)+2); // number of atoms reached from one with maximal 4 bonds plus Root itself … … 4607 4632 4608 4633 // free memory and exit 4609 Free( (void **)&PredecessorList, "molecule::CreateListOfUniqueFragmentsOfOrder: **PredecessorList");4610 Free( (void **)&ShortestPathList, "molecule::CreateListOfUniqueFragmentsOfOrder: *ShortestPathList");4611 Free( (void **)&Labels, "molecule::CreateListOfUniqueFragmentsOfOrder: *Labels");4612 Free( (void **)&ColorVertexList, "molecule::CreateListOfUniqueFragmentsOfOrder: *ColorList");4634 Free(&PredecessorList); 4635 Free(&ShortestPathList); 4636 Free(&Labels); 4637 Free(&ColorVertexList); 4613 4638 delete(RootStack); 4614 4639 delete(TouchedStack); … … 4660 4685 int Removal; 4661 4686 int SpaceLeft; 4662 int *TouchedList = (int *) Malloc(sizeof(int)*(SubOrder+1), "molecule::SPFragmentGenerator: *TouchedList");4687 int *TouchedList = Malloc<int>(SubOrder + 1, "molecule::SPFragmentGenerator: *TouchedList"); 4663 4688 bond *Binder = NULL; 4664 4689 bond **BondsList = NULL; … … 4668 4693 4669 4694 // Hier muessen von 1 bis NumberOfBondsPerAtom[Walker->nr] alle Kombinationen 4670 // von Endstuecken (aus den Bonds) hinzugef ᅵᅵgt werden und fᅵᅵr verbleibende ANOVAOrder4671 // rekursiv GraphCrawler in der n ᅵᅵchsten Ebene aufgerufen werden4695 // von Endstuecken (aus den Bonds) hinzugefuegt werden und fuer verbleibende ANOVAOrder 4696 // rekursiv GraphCrawler in der naechsten Ebene aufgerufen werden 4672 4697 4673 4698 *out << Verbose(1+verbosity) << "Begin of SPFragmentGenerator." << endl; … … 4729 4754 } 4730 4755 // then allocate and fill the list 4731 BondsList = (bond **) Malloc(sizeof(bond *)*SubSetDimension, "molecule::SPFragmentGenerator: **BondsList");4756 BondsList = Malloc<bond*>(SubSetDimension, "molecule::SPFragmentGenerator: **BondsList"); 4732 4757 SubSetDimension = 0; 4733 4758 Binder = FragmentSearch->BondsPerSPList[2*SP]; … … 4741 4766 *out << Verbose(2+verbosity) << "Calling subset generator " << SP << " away from root " << *FragmentSearch->Root << " with sub set dimension " << SubSetDimension << "." << endl; 4742 4767 SPFragmentGenerator(out, FragmentSearch, SP, BondsList, SubSetDimension, SubOrder-bits); 4743 Free( (void **)&BondsList, "molecule::SPFragmentGenerator: **BondsList");4768 Free(&BondsList); 4744 4769 } 4745 4770 } else { … … 4775 4800 } 4776 4801 } 4777 Free( (void **)&TouchedList, "molecule::SPFragmentGenerator: *TouchedList");4802 Free(&TouchedList); 4778 4803 *out << Verbose(1+verbosity) << "End of SPFragmentGenerator, " << RootDistance << " away from Root " << *FragmentSearch->Root << " and SubOrder is " << SubOrder << "." << endl; 4779 4804 }; … … 4953 4978 *out << Verbose(0) << "Preparing subset for this root and calling generator." << endl; 4954 4979 // prepare the subset and call the generator 4955 BondsList = (bond **) Malloc(sizeof(bond *)*FragmentSearch.BondsPerSPCount[0], "molecule::PowerSetGenerator: **BondsList");4980 BondsList = Malloc<bond*>(FragmentSearch.BondsPerSPCount[0], "molecule::PowerSetGenerator: **BondsList"); 4956 4981 BondsList[0] = FragmentSearch.BondsPerSPList[0]->next; // on SP level 0 there's only the root bond 4957 4982 4958 4983 SPFragmentGenerator(out, &FragmentSearch, 0, BondsList, FragmentSearch.BondsPerSPCount[0], Order); 4959 4984 4960 Free( (void **)&BondsList, "molecule::PowerSetGenerator: **BondsList");4985 Free(&BondsList); 4961 4986 } else { 4962 4987 *out << Verbose(0) << "Not enough total number of edges to build " << Order << "-body fragments." << endl; … … 5012 5037 *out << Verbose(2) << "Begin of ScanForPeriodicCorrection." << endl; 5013 5038 5014 ColorList = (enum Shading *) Malloc(sizeof(enum Shading)*AtomCount, "molecule::ScanForPeriodicCorrection: *ColorList");5039 ColorList = Malloc<enum Shading>(AtomCount, "molecule::ScanForPeriodicCorrection: *ColorList"); 5015 5040 while (flag) { 5016 5041 // remove bonds that are beyond bonddistance … … 5073 5098 // free allocated space from ReturnFullMatrixforSymmetric() 5074 5099 delete(AtomStack); 5075 Free( (void **)&ColorList, "molecule::ScanForPeriodicCorrection: *ColorList");5076 Free( (void **)&matrix, "molecule::ScanForPeriodicCorrection: *matrix");5100 Free(&ColorList); 5101 Free(&matrix); 5077 5102 *out << Verbose(2) << "End of ScanForPeriodicCorrection." << endl; 5078 5103 }; … … 5084 5109 double * molecule::ReturnFullMatrixforSymmetric(double *symm) 5085 5110 { 5086 double *matrix = (double *) Malloc(sizeof(double)*NDIM*NDIM, "molecule::ReturnFullMatrixforSymmetric: *matrix");5111 double *matrix = Malloc<double>(NDIM * NDIM, "molecule::ReturnFullMatrixforSymmetric: *matrix"); 5087 5112 matrix[0] = symm[0]; 5088 5113 matrix[1] = symm[1]; … … 5211 5236 // FragmentLowerOrdersList is a 2D-array of pointer to MoleculeListClass objects, one dimension represents the ANOVA expansion of a single order (i.e. 5) 5212 5237 // with all needed lower orders that are subtracted, the other dimension is the BondOrder (i.e. from 1 to 5) 5213 NumMoleculesOfOrder = (int *) Malloc(sizeof(int)*UpgradeCount, "molecule::FragmentBOSSANOVA: *NumMoleculesOfOrder");5214 FragmentLowerOrdersList = (Graph ***) Malloc(sizeof(Graph **)*UpgradeCount, "molecule::FragmentBOSSANOVA: ***FragmentLowerOrdersList");5238 NumMoleculesOfOrder = Malloc<int>(UpgradeCount, "molecule::FragmentBOSSANOVA: *NumMoleculesOfOrder"); 5239 FragmentLowerOrdersList = Malloc<Graph**>(UpgradeCount, "molecule::FragmentBOSSANOVA: ***FragmentLowerOrdersList"); 5215 5240 5216 5241 // initialise the fragments structure 5217 FragmentSearch.ShortestPathList = (int *) Malloc(sizeof(int)*AtomCount, "molecule::PowerSetGenerator: *ShortestPathList");5242 FragmentSearch.ShortestPathList = Malloc<int>(AtomCount, "molecule::PowerSetGenerator: *ShortestPathList"); 5218 5243 FragmentSearch.FragmentCounter = 0; 5219 5244 FragmentSearch.FragmentSet = new KeySet; … … 5250 5275 5251 5276 // initialise Order-dependent entries of UniqueFragments structure 5252 FragmentSearch.BondsPerSPList = (bond **) Malloc(sizeof(bond *)*Order*2, "molecule::PowerSetGenerator: ***BondsPerSPList");5253 FragmentSearch.BondsPerSPCount = (int *) Malloc(sizeof(int)*Order, "molecule::PowerSetGenerator: *BondsPerSPCount");5277 FragmentSearch.BondsPerSPList = Malloc<bond*>(Order * 2, "molecule::PowerSetGenerator: ***BondsPerSPList"); 5278 FragmentSearch.BondsPerSPCount = Malloc<int>(Order, "molecule::PowerSetGenerator: *BondsPerSPCount"); 5254 5279 for (int i=Order;i--;) { 5255 5280 FragmentSearch.BondsPerSPList[2*i] = new bond(); // start node … … 5262 5287 // allocate memory for all lower level orders in this 1D-array of ptrs 5263 5288 NumLevels = 1 << (Order-1); // (int)pow(2,Order); 5264 FragmentLowerOrdersList[RootNr] = (Graph **) Malloc(sizeof(Graph *)*NumLevels, "molecule::FragmentBOSSANOVA: **FragmentLowerOrdersList[]");5289 FragmentLowerOrdersList[RootNr] = Malloc<Graph*>(NumLevels, "molecule::FragmentBOSSANOVA: **FragmentLowerOrdersList[]"); 5265 5290 for (int i=0;i<NumLevels;i++) 5266 5291 FragmentLowerOrdersList[RootNr][i] = NULL; … … 5329 5354 5330 5355 // free Order-dependent entries of UniqueFragments structure for next loop cycle 5331 Free( (void **)&FragmentSearch.BondsPerSPCount, "molecule::PowerSetGenerator: *BondsPerSPCount");5356 Free(&FragmentSearch.BondsPerSPCount); 5332 5357 for (int i=Order;i--;) { 5333 5358 delete(FragmentSearch.BondsPerSPList[2*i]); 5334 5359 delete(FragmentSearch.BondsPerSPList[2*i+1]); 5335 5360 } 5336 Free( (void **)&FragmentSearch.BondsPerSPList, "molecule::PowerSetGenerator: ***BondsPerSPList");5361 Free(&FragmentSearch.BondsPerSPList); 5337 5362 } 5338 5363 } … … 5342 5367 5343 5368 // cleanup FragmentSearch structure 5344 Free( (void **)&FragmentSearch.ShortestPathList, "molecule::PowerSetGenerator: *ShortestPathList");5369 Free(&FragmentSearch.ShortestPathList); 5345 5370 delete(FragmentSearch.FragmentSet); 5346 5371 … … 5373 5398 } 5374 5399 } 5375 Free( (void **)&FragmentLowerOrdersList[RootNr], "molecule::FragmentBOSSANOVA: **FragmentLowerOrdersList[]");5400 Free(&FragmentLowerOrdersList[RootNr]); 5376 5401 RootNr++; 5377 5402 } 5378 Free( (void **)&FragmentLowerOrdersList, "molecule::FragmentBOSSANOVA: ***FragmentLowerOrdersList");5379 Free( (void **)&NumMoleculesOfOrder, "molecule::FragmentBOSSANOVA: *NumMoleculesOfOrder");5403 Free(&FragmentLowerOrdersList); 5404 Free(&NumMoleculesOfOrder); 5380 5405 5381 5406 *out << Verbose(0) << "End of FragmentBOSSANOVA." << endl; … … 5467 5492 if (result) { 5468 5493 *out << Verbose(5) << "Calculating distances" << endl; 5469 Distances = (double *) Malloc(sizeof(double)*AtomCount, "molecule::IsEqualToWithinThreshold: Distances");5470 OtherDistances = (double *) Malloc(sizeof(double)*AtomCount, "molecule::IsEqualToWithinThreshold: OtherDistances");5494 Distances = Malloc<double>(AtomCount, "molecule::IsEqualToWithinThreshold: Distances"); 5495 OtherDistances = Malloc<double>(AtomCount, "molecule::IsEqualToWithinThreshold: OtherDistances"); 5471 5496 Walker = start; 5472 5497 while (Walker->next != end) { … … 5482 5507 /// ... sort each list (using heapsort (o(N log N)) from GSL) 5483 5508 *out << Verbose(5) << "Sorting distances" << endl; 5484 PermMap = (size_t *) Malloc(sizeof(size_t)*AtomCount, "molecule::IsEqualToWithinThreshold: *PermMap");5485 OtherPermMap = (size_t *) Malloc(sizeof(size_t)*AtomCount, "molecule::IsEqualToWithinThreshold: *OtherPermMap");5509 PermMap = Malloc<size_t>(AtomCount, "molecule::IsEqualToWithinThreshold: *PermMap"); 5510 OtherPermMap = Malloc<size_t>(AtomCount, "molecule::IsEqualToWithinThreshold: *OtherPermMap"); 5486 5511 gsl_heapsort_index (PermMap, Distances, AtomCount, sizeof(double), CompareDoubles); 5487 5512 gsl_heapsort_index (OtherPermMap, OtherDistances, AtomCount, sizeof(double), CompareDoubles); 5488 PermutationMap = (int *) Malloc(sizeof(int)*AtomCount, "molecule::IsEqualToWithinThreshold: *PermutationMap");5513 PermutationMap = Malloc<int>(AtomCount, "molecule::IsEqualToWithinThreshold: *PermutationMap"); 5489 5514 *out << Verbose(5) << "Combining Permutation Maps" << endl; 5490 5515 for(int i=AtomCount;i--;) 5491 5516 PermutationMap[PermMap[i]] = (int) OtherPermMap[i]; 5492 5517 5493 /// ... and compare them step by step, whether the difference is individ iually(!) below \a threshold for all5518 /// ... and compare them step by step, whether the difference is individually(!) below \a threshold for all 5494 5519 *out << Verbose(4) << "Comparing distances" << endl; 5495 5520 flag = 0; … … 5499 5524 flag = 1; 5500 5525 } 5501 Free((void **)&PermMap, "molecule::IsEqualToWithinThreshold: *PermMap"); 5502 Free((void **)&OtherPermMap, "molecule::IsEqualToWithinThreshold: *OtherPermMap");5503 5504 /// free memory5505 Free( (void **)&Distances, "molecule::IsEqualToWithinThreshold: Distances");5506 Free( (void **)&OtherDistances, "molecule::IsEqualToWithinThreshold: OtherDistances");5526 5527 // free memory 5528 Free(&PermMap); 5529 Free(&OtherPermMap); 5530 Free(&Distances); 5531 Free(&OtherDistances); 5507 5532 if (flag) { // if not equal 5508 Free( (void **)&PermutationMap, "molecule::IsEqualToWithinThreshold: *PermutationMap");5533 Free(&PermutationMap); 5509 5534 result = false; 5510 5535 } … … 5532 5557 atom *Walker = NULL, *OtherWalker = NULL; 5533 5558 *out << Verbose(3) << "Begin of GetFatherAtomicMap." << endl; 5534 int *AtomicMap = (int *) Malloc(sizeof(int)*AtomCount, "molecule::GetAtomicMap: *AtomicMap"); //Calloc5559 int *AtomicMap = Malloc<int>(AtomCount, "molecule::GetAtomicMap: *AtomicMap"); 5535 5560 for (int i=AtomCount;i--;) 5536 5561 AtomicMap[i] = -1; -
src/molecules.hpp
raba92d r13a574 207 207 208 208 molecule *CopyMolecule(); 209 molecule* CopyMoleculeFromSubRegion(Vector offset, double *parallelepiped); 209 210 210 211 /// Fragment molecule by two different approaches: -
src/parser.cpp
raba92d r13a574 8 8 9 9 #include "helpers.hpp" 10 #include "memoryallocator.hpp" 10 11 #include "parser.hpp" 11 12 … … 56 57 MatrixContainer::MatrixContainer() { 57 58 Indices = NULL; 58 Header = (char **) Malloc(sizeof(char)*1, "MatrixContainer::MatrixContainer: **Header");59 Matrix = (double ***) Malloc(sizeof(double **)*(1), "MatrixContainer::MatrixContainer: ***Matrix"); // one more each for the total molecule60 RowCounter = (int *) Malloc(sizeof(int)*(1), "MatrixContainer::MatrixContainer: *RowCounter");61 ColumnCounter = (int *) Malloc(sizeof(int)*(1), "MatrixContainer::MatrixContainer: *ColumnCounter");59 Header = Malloc<char*>(1, "MatrixContainer::MatrixContainer: **Header"); 60 Matrix = Malloc<double**>(1, "MatrixContainer::MatrixContainer: ***Matrix"); // one more each for the total molecule 61 RowCounter = Malloc<int>(1, "MatrixContainer::MatrixContainer: *RowCounter"); 62 ColumnCounter = Malloc<int>(1, "MatrixContainer::MatrixContainer: *ColumnCounter"); 62 63 Header[0] = NULL; 63 64 Matrix[0] = NULL; … … 74 75 if ((ColumnCounter != NULL) && (RowCounter != NULL)) { 75 76 for(int j=RowCounter[i]+1;j--;) 76 Free( (void **)&Matrix[i][j], "MatrixContainer::~MatrixContainer: *Matrix[][]");77 Free( (void **)&Matrix[i], "MatrixContainer::~MatrixContainer: **Matrix[]");77 Free(&Matrix[i][j]); 78 Free(&Matrix[i]); 78 79 } 79 80 } 80 81 if ((ColumnCounter != NULL) && (RowCounter != NULL) && (Matrix[MatrixCounter] != NULL)) 81 82 for(int j=RowCounter[MatrixCounter]+1;j--;) 82 Free( (void **)&Matrix[MatrixCounter][j], "MatrixContainer::~MatrixContainer: *Matrix[MatrixCounter][]");83 Free(&Matrix[MatrixCounter][j]); 83 84 if (MatrixCounter != 0) 84 Free( (void **)&Matrix[MatrixCounter], "MatrixContainer::~MatrixContainer: **Matrix[MatrixCounter]");85 Free( (void **)&Matrix, "MatrixContainer::~MatrixContainer: ***Matrix");85 Free(&Matrix[MatrixCounter]); 86 Free(&Matrix); 86 87 } 87 88 if (Indices != NULL) 88 89 for(int i=MatrixCounter+1;i--;) { 89 Free( (void **)&Indices[i], "MatrixContainer::~MatrixContainer: *Indices[]");90 } 91 Free( (void **)&Indices, "MatrixContainer::~MatrixContainer: **Indices");90 Free(&Indices[i]); 91 } 92 Free(&Indices); 92 93 93 94 if (Header != NULL) 94 95 for(int i=MatrixCounter+1;i--;) 95 Free( (void **)&Header[i], "MatrixContainer::~MatrixContainer: *Header[]");96 Free( (void **)&Header, "MatrixContainer::~MatrixContainer: **Header");97 Free( (void **)&RowCounter, "MatrixContainer::~MatrixContainer: *RowCounter");98 Free( (void **)&ColumnCounter, "MatrixContainer::~MatrixContainer: *RowCounter");96 Free(&Header[i]); 97 Free(&Header); 98 Free(&RowCounter); 99 Free(&ColumnCounter); 99 100 }; 100 101 … … 109 110 if (Matrix == NULL) { 110 111 cout << " with trivial mapping." << endl; 111 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "MatrixContainer::InitialiseIndices: **Indices");112 Indices = Malloc<int*>(MatrixCounter + 1, "MatrixContainer::InitialiseIndices: **Indices"); 112 113 for(int i=MatrixCounter+1;i--;) { 113 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]");114 Indices[i] = Malloc<int>(RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]"); 114 115 for(int j=RowCounter[i];j--;) 115 116 Indices[i][j] = j; … … 119 120 if (MatrixCounter != Matrix->MatrixCounter) 120 121 return false; 121 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "MatrixContainer::InitialiseIndices: **Indices");122 Indices = Malloc<int*>(MatrixCounter + 1, "MatrixContainer::InitialiseIndices: **Indices"); 122 123 for(int i=MatrixCounter+1;i--;) { 123 124 if (RowCounter[i] != Matrix->RowCounter[i]) 124 125 return false; 125 Indices[i] = (int *) Malloc(sizeof(int)*Matrix->RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]");126 Indices[i] = Malloc<int>(Matrix->RowCounter[i], "MatrixContainer::InitialiseIndices: *Indices[]"); 126 127 for(int j=Matrix->RowCounter[i];j--;) { 127 128 Indices[i][j] = Matrix->Indices[i][j]; … … 162 163 163 164 // parse header 164 Header[MatrixNr] = (char *) Malloc(sizeof(char)*1024, "MatrixContainer::ParseMatrix: *Header[]");165 Header[MatrixNr] = Malloc<char>(1024, "MatrixContainer::ParseMatrix: *Header[]"); 165 166 for (int m=skiplines+1;m--;) 166 167 input.getline(Header[MatrixNr], 1023); … … 197 198 // allocate matrix if it's not zero dimension in one direction 198 199 if ((ColumnCounter[MatrixNr] > 0) && (RowCounter[MatrixNr] > -1)) { 199 Matrix[MatrixNr] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixNr]+1), "MatrixContainer::ParseMatrix: **Matrix[]");200 Matrix[MatrixNr] = Malloc<double*>(RowCounter[MatrixNr] + 1, "MatrixContainer::ParseMatrix: **Matrix[]"); 200 201 201 202 // parse in each entry for this matrix … … 209 210 strncpy(Header[MatrixNr], line.str().c_str(), 1023); 210 211 for(int j=0;j<RowCounter[MatrixNr];j++) { 211 Matrix[MatrixNr][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[][]");212 Matrix[MatrixNr][j] = Malloc<double>(ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[][]"); 212 213 input.getline(filename, 1023); 213 214 stringstream lines(filename); … … 220 221 } 221 222 //cout << endl; 222 Matrix[MatrixNr][ RowCounter[MatrixNr] ] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[RowCounter[MatrixNr]][]");223 Matrix[MatrixNr][ RowCounter[MatrixNr] ] = Malloc<double>(ColumnCounter[MatrixNr], "MatrixContainer::ParseMatrix: *Matrix[RowCounter[MatrixNr]][]"); 223 224 for(int j=ColumnCounter[MatrixNr];j--;) 224 225 Matrix[MatrixNr][ RowCounter[MatrixNr] ][j] = 0.; … … 274 275 275 276 cout << "Parsing through each fragment and retrieving " << prefix << suffix << "." << endl; 276 Header = (char **) ReAlloc(Header, sizeof(char *)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: **Header"); // one more each for the total molecule277 Matrix = (double ***) ReAlloc(Matrix, sizeof(double **)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: ***Matrix"); // one more each for the total molecule278 RowCounter = (int *) ReAlloc(RowCounter, sizeof(int)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: *RowCounter");279 ColumnCounter = (int *) ReAlloc(ColumnCounter, sizeof(int)*(MatrixCounter+1), "MatrixContainer::ParseFragmentMatrix: *ColumnCounter");277 Header = ReAlloc<char*>(Header, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: **Header"); // one more each for the total molecule 278 Matrix = ReAlloc<double**>(Matrix, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: ***Matrix"); // one more each for the total molecule 279 RowCounter = ReAlloc<int>(RowCounter, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: *RowCounter"); 280 ColumnCounter = ReAlloc<int>(ColumnCounter, MatrixCounter + 1, "MatrixContainer::ParseFragmentMatrix: *ColumnCounter"); 280 281 for(int i=MatrixCounter+1;i--;) { 281 282 Matrix[i] = NULL; … … 291 292 if (!ParseMatrix(file.str().c_str(), skiplines, skipcolumns, i)) 292 293 return false; 293 Free( (void **)&FragmentNumber, "MatrixContainer::ParseFragmentMatrix: *FragmentNumber");294 Free(&FragmentNumber); 294 295 } 295 296 return true; … … 306 307 { 307 308 MatrixCounter = MCounter; 308 Header = (char **) Malloc(sizeof(char *)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: *Header");309 Matrix = (double ***) Malloc(sizeof(double **)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: ***Matrix"); // one more each for the total molecule310 RowCounter = (int *) Malloc(sizeof(int)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: *RowCounter");311 ColumnCounter = (int *) Malloc(sizeof(int)*(MatrixCounter+1), "MatrixContainer::AllocateMatrix: *ColumnCounter");309 Header = Malloc<char*>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *Header"); 310 Matrix = Malloc<double**>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: ***Matrix"); // one more each for the total molecule 311 RowCounter = Malloc<int>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *RowCounter"); 312 ColumnCounter = Malloc<int>(MatrixCounter + 1, "MatrixContainer::AllocateMatrix: *ColumnCounter"); 312 313 for(int i=MatrixCounter+1;i--;) { 313 Header[i] = (char *) Malloc(sizeof(char)*1024, "MatrixContainer::AllocateMatrix: *Header[i]");314 Header[i] = Malloc<char>(1024, "MatrixContainer::AllocateMatrix: *Header[i]"); 314 315 strncpy(Header[i], GivenHeader[i], 1023); 315 316 RowCounter[i] = RCounter[i]; 316 317 ColumnCounter[i] = CCounter[i]; 317 Matrix[i] = (double **) Malloc(sizeof(double *)*(RowCounter[i]+1), "MatrixContainer::AllocateMatrix: **Matrix[]");318 Matrix[i] = Malloc<double*>(RowCounter[i] + 1, "MatrixContainer::AllocateMatrix: **Matrix[]"); 318 319 for(int j=RowCounter[i]+1;j--;) { 319 Matrix[i][j] = (double *) Malloc(sizeof(double)*ColumnCounter[i], "MatrixContainer::AllocateMatrix: *Matrix[][]");320 Matrix[i][j] = Malloc<double>(ColumnCounter[i], "MatrixContainer::AllocateMatrix: *Matrix[][]"); 320 321 for(int k=ColumnCounter[i];k--;) 321 322 Matrix[i][j][k] = 0.; … … 466 467 FragmentNumber = FixedDigitNumber(MatrixCounter, i); 467 468 line << name << FRAGMENTPREFIX << FragmentNumber << "/" << prefix; 468 Free( (void **)&FragmentNumber, "*FragmentNumber");469 Free(&FragmentNumber); 469 470 output.open(line.str().c_str(), ios::out); 470 471 if (output == NULL) { … … 520 521 { 521 522 cout << "Parsing energy indices." << endl; 522 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "EnergyMatrix::ParseIndices: **Indices");523 Indices = Malloc<int*>(MatrixCounter + 1, "EnergyMatrix::ParseIndices: **Indices"); 523 524 for(int i=MatrixCounter+1;i--;) { 524 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "EnergyMatrix::ParseIndices: *Indices[]");525 Indices[i] = Malloc<int>(RowCounter[i], "EnergyMatrix::ParseIndices: *Indices[]"); 525 526 for(int j=RowCounter[i];j--;) 526 527 Indices[i][j] = j; … … 579 580 // allocate last plus one matrix 580 581 cout << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl; 581 Matrix[MatrixCounter] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixCounter]+1), "MatrixContainer::ParseFragmentMatrix: **Matrix[]");582 Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]"); 582 583 for(int j=0;j<=RowCounter[MatrixCounter];j++) 583 Matrix[MatrixCounter][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");584 Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]"); 584 585 585 586 // try independently to parse global energysuffix file if present … … 606 607 607 608 cout << "Parsing force indices for " << MatrixCounter << " matrices." << endl; 608 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "ForceMatrix::ParseIndices: **Indices");609 Indices = Malloc<int*>(MatrixCounter + 1, "ForceMatrix::ParseIndices: **Indices"); 609 610 line << name << FRAGMENTPREFIX << FORCESFILE; 610 611 input.open(line.str().c_str(), ios::in); … … 619 620 line.str(filename); 620 621 // parse the values 621 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "ForceMatrix::ParseIndices: *Indices[]");622 Indices[i] = Malloc<int>(RowCounter[i], "ForceMatrix::ParseIndices: *Indices[]"); 622 623 FragmentNumber = FixedDigitNumber(MatrixCounter, i); 623 624 //cout << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:"; 624 Free( (void **)&FragmentNumber, "ForceMatrix::ParseIndices: *FragmentNumber");625 Free(&FragmentNumber); 625 626 for(int j=0;(j<RowCounter[i]) && (!line.eof());j++) { 626 627 line >> Indices[i][j]; … … 629 630 //cout << endl; 630 631 } 631 Indices[MatrixCounter] = (int *) Malloc(sizeof(int)*RowCounter[MatrixCounter], "ForceMatrix::ParseIndices: *Indices[]");632 Indices[MatrixCounter] = Malloc<int>(RowCounter[MatrixCounter], "ForceMatrix::ParseIndices: *Indices[]"); 632 633 for(int j=RowCounter[MatrixCounter];j--;) { 633 634 Indices[MatrixCounter][j] = j; … … 714 715 // allocate last plus one matrix 715 716 cout << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl; 716 Matrix[MatrixCounter] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixCounter]+1), "MatrixContainer::ParseFragmentMatrix: **Matrix[]");717 Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]"); 717 718 for(int j=0;j<=RowCounter[MatrixCounter];j++) 718 Matrix[MatrixCounter][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");719 Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]"); 719 720 720 721 // try independently to parse global forcesuffix file if present … … 743 744 744 745 cout << "Parsing hessian indices for " << MatrixCounter << " matrices." << endl; 745 Indices = (int **) Malloc(sizeof(int *)*(MatrixCounter+1), "HessianMatrix::ParseIndices: **Indices");746 Indices = Malloc<int*>(MatrixCounter + 1, "HessianMatrix::ParseIndices: **Indices"); 746 747 line << name << FRAGMENTPREFIX << FORCESFILE; 747 748 input.open(line.str().c_str(), ios::in); … … 756 757 line.str(filename); 757 758 // parse the values 758 Indices[i] = (int *) Malloc(sizeof(int)*RowCounter[i], "HessianMatrix::ParseIndices: *Indices[]");759 Indices[i] = Malloc<int>(RowCounter[i], "HessianMatrix::ParseIndices: *Indices[]"); 759 760 FragmentNumber = FixedDigitNumber(MatrixCounter, i); 760 761 //cout << FRAGMENTPREFIX << FragmentNumber << "[" << RowCounter[i] << "]:"; 761 Free( (void **)&FragmentNumber, "HessianMatrix::ParseIndices: *FragmentNumber");762 Free(&FragmentNumber); 762 763 for(int j=0;(j<RowCounter[i]) && (!line.eof());j++) { 763 764 line >> Indices[i][j]; … … 766 767 //cout << endl; 767 768 } 768 Indices[MatrixCounter] = (int *) Malloc(sizeof(int)*RowCounter[MatrixCounter], "HessianMatrix::ParseIndices: *Indices[]");769 Indices[MatrixCounter] = Malloc<int>(RowCounter[MatrixCounter], "HessianMatrix::ParseIndices: *Indices[]"); 769 770 for(int j=RowCounter[MatrixCounter];j--;) { 770 771 Indices[MatrixCounter][j] = j; … … 938 939 // allocate last plus one matrix 939 940 cout << "Allocating last plus one matrix with " << (RowCounter[MatrixCounter]+1) << " rows and " << ColumnCounter[MatrixCounter] << " columns." << endl; 940 Matrix[MatrixCounter] = (double **) Malloc(sizeof(double *)*(RowCounter[MatrixCounter]+1), "MatrixContainer::ParseFragmentMatrix: **Matrix[]");941 Matrix[MatrixCounter] = Malloc<double*>(RowCounter[MatrixCounter] + 1, "MatrixContainer::ParseFragmentMatrix: **Matrix[]"); 941 942 for(int j=0;j<=RowCounter[MatrixCounter];j++) 942 Matrix[MatrixCounter][j] = (double *) Malloc(sizeof(double)*ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]");943 Matrix[MatrixCounter][j] = Malloc<double>(ColumnCounter[MatrixCounter], "MatrixContainer::ParseFragmentMatrix: *Matrix[][]"); 943 944 944 945 // try independently to parse global forcesuffix file if present … … 970 971 KeySetsContainer::~KeySetsContainer() { 971 972 for(int i=FragmentCounter;i--;) 972 Free( (void **)&KeySets[i], "KeySetsContainer::~KeySetsContainer: *KeySets[]");973 Free(&KeySets[i]); 973 974 for(int i=Order;i--;) 974 Free( (void **)&OrderSet[i], "KeySetsContainer::~KeySetsContainer: *OrderSet[]");975 Free( (void **)&KeySets, "KeySetsContainer::~KeySetsContainer: **KeySets");976 Free( (void **)&OrderSet, "KeySetsContainer::~KeySetsContainer: **OrderSet");977 Free( (void **)&AtomCounter, "KeySetsContainer::~KeySetsContainer: *AtomCounter");978 Free( (void **)&FragmentsPerOrder, "KeySetsContainer::~KeySetsContainer: *FragmentsPerOrder");975 Free(&OrderSet[i]); 976 Free(&KeySets); 977 Free(&OrderSet); 978 Free(&AtomCounter); 979 Free(&FragmentsPerOrder); 979 980 }; 980 981 … … 993 994 FragmentCounter = FCounter; 994 995 cout << "Parsing key sets." << endl; 995 KeySets = (int **) Malloc(sizeof(int *)*FragmentCounter, "KeySetsContainer::ParseKeySets: **KeySets");996 KeySets = Malloc<int*>(FragmentCounter, "KeySetsContainer::ParseKeySets: **KeySets"); 996 997 for(int i=FragmentCounter;i--;) 997 998 KeySets[i] = NULL; … … 1003 1004 } 1004 1005 1005 AtomCounter = (int *) Malloc(sizeof(int)*FragmentCounter, "KeySetsContainer::ParseKeySets: *RowCounter");1006 AtomCounter = Malloc<int>(FragmentCounter, "KeySetsContainer::ParseKeySets: *RowCounter"); 1006 1007 for(int i=0;(i<FragmentCounter) && (!input.eof());i++) { 1007 1008 stringstream line; 1008 1009 AtomCounter[i] = ACounter[i]; 1009 1010 // parse the values 1010 KeySets[i] = (int *) Malloc(sizeof(int)*AtomCounter[i], "KeySetsContainer::ParseKeySets: *KeySets[]");1011 KeySets[i] = Malloc<int>(AtomCounter[i], "KeySetsContainer::ParseKeySets: *KeySets[]"); 1011 1012 for(int j=AtomCounter[i];j--;) 1012 1013 KeySets[i][j] = -1; 1013 1014 FragmentNumber = FixedDigitNumber(FragmentCounter, i); 1014 1015 //cout << FRAGMENTPREFIX << FragmentNumber << "[" << AtomCounter[i] << "]:"; 1015 Free( (void **)&FragmentNumber, "KeySetsContainer::ParseKeySets: *FragmentNumber");1016 Free(&FragmentNumber); 1016 1017 input.getline(filename, 1023); 1017 1018 line.str(filename); … … 1047 1048 1048 1049 // scan through all to determine fragments per order 1049 FragmentsPerOrder = (int *) Malloc(sizeof(int)*Order, "KeySetsContainer::ParseManyBodyTerms: *FragmentsPerOrder");1050 FragmentsPerOrder = Malloc<int>(Order, "KeySetsContainer::ParseManyBodyTerms: *FragmentsPerOrder"); 1050 1051 for(int i=Order;i--;) 1051 1052 FragmentsPerOrder[i] = 0; … … 1061 1062 1062 1063 // scan through all to gather indices to each order set 1063 OrderSet = (int **) Malloc(sizeof(int *)*Order, "KeySetsContainer::ParseManyBodyTerms: **OrderSet");1064 OrderSet = Malloc<int*>(Order, "KeySetsContainer::ParseManyBodyTerms: **OrderSet"); 1064 1065 for(int i=Order;i--;) 1065 OrderSet[i] = (int *) Malloc(sizeof(int)*FragmentsPerOrder[i], "KeySetsContainer::ParseManyBodyTermsKeySetsContainer::ParseManyBodyTerms: *OrderSet[]");1066 OrderSet[i] = Malloc<int>(FragmentsPerOrder[i], "KeySetsContainer::ParseManyBodyTermsKeySetsContainer::ParseManyBodyTerms: *OrderSet[]"); 1066 1067 for(int i=Order;i--;) 1067 1068 FragmentsPerOrder[i] = 0; -
src/stackclass.hpp
raba92d r13a574 3 3 4 4 #include "verbose.hpp" 5 #include "memoryallocator.hpp" 5 6 6 7 template <typename T> class StackClass; … … 43 44 NextFreeField = 0; 44 45 EntryCount = dimension; 45 StackList = (T *) Malloc(sizeof(T)*EntryCount, "StackClass::StackClass: **StackList");46 StackList = Malloc<T>(EntryCount, "StackClass::StackClass: **StackList"); 46 47 }; 47 48 … … 50 51 template <typename T> StackClass<T>::~StackClass() 51 52 { 52 Free( (void **)&StackList, "StackClass::StackClass: **StackList");53 Free(&StackList); 53 54 }; 54 55 -
src/tesselation.cpp
raba92d r13a574 8 8 #include "helpers.hpp" 9 9 #include "linkedcell.hpp" 10 #include "memoryallocator.hpp" 10 11 #include "tesselation.hpp" 11 12 #include "tesselationhelpers.hpp" -
src/tesselationunittest.cpp
raba92d r13a574 84 84 delete(TesselStruct); 85 85 for (LinkedNodes::iterator Runner = Corners.begin(); Runner != Corners.end(); Runner++) { 86 delete ((*Runner)->Name);86 delete[]((*Runner)->Name); 87 87 delete((*Runner)->node); 88 88 delete(*Runner); … … 178 178 for (set<BoundaryTriangleSet*>::iterator TriangleRunner = triangles->begin(); TriangleRunner != triangles->end(); TriangleRunner++) 179 179 CPPUNIT_ASSERT_EQUAL( true, (*TriangleRunner)->ContainsBoundaryPoint(Walker) ); 180 delete(triangles); 180 181 } 181 182 } -
src/vector.cpp
raba92d r13a574 8 8 #include "defs.hpp" 9 9 #include "helpers.hpp" 10 #include "memoryallocator.hpp" 10 11 #include "leastsquaremin.hpp" 11 12 #include "vector.hpp" … … 473 474 }; 474 475 475 /** Rotates the vector around the axis given by \a *axis by an angle of \a alpha.476 /** Rotates the vector relative to the origin around the axis given by \a *axis by an angle of \a alpha. 476 477 * \param *axis rotation axis 477 478 * \param alpha rotation angle in radian … … 484 485 a.ProjectOntoPlane(axis); 485 486 // construct normal vector 486 y.MakeNormalVector(axis,this); 487 bool rotatable = y.MakeNormalVector(axis,&a); 488 // The normal vector cannot be created if there is linar dependency. 489 // Then the vector to rotate is on the axis and any rotation leads to the vector itself. 490 if (!rotatable) { 491 return; 492 } 487 493 y.Scale(Norm()); 488 494 // scale normal vector by sine and this vector by cosine 489 495 y.Scale(sin(alpha)); 490 Scale(cos(alpha)); 496 a.Scale(cos(alpha)); 497 CopyVector(Projection(axis)); 491 498 // add scaled normal vector onto this vector 492 499 AddVector(&y); … … 674 681 double * Vector::InverseMatrix(double *A) 675 682 { 676 double *B = (double *) Malloc(sizeof(double)*NDIM*NDIM, "Vector::InverseMatrix: *B");683 double *B = Malloc<double>(NDIM * NDIM, "Vector::InverseMatrix: *B"); 677 684 double detA = RDET3(A); 678 685 double detAReci; … … 1221 1228 return true; 1222 1229 }; 1230 1231 /** 1232 * Checks whether this vector is within the parallelepiped defined by the given three vectors and 1233 * their offset. 1234 * 1235 * @param offest for the origin of the parallelepiped 1236 * @param three vectors forming the matrix that defines the shape of the parallelpiped 1237 */ 1238 bool Vector::IsInParallelepiped(Vector offset, double *parallelepiped) 1239 { 1240 Vector a; 1241 a.CopyVector(this); 1242 a.SubtractVector(&offset); 1243 a.InverseMatrixMultiplication(parallelepiped); 1244 bool isInside = true; 1245 1246 for (int i=NDIM;i--;) 1247 isInside = isInside && ((a.x[i] <= 1) && (a.x[i] >= 0)); 1248 1249 return isInside; 1250 } -
src/vector.hpp
raba92d r13a574 68 68 void AskPosition(double *cell_size, bool check); 69 69 bool Output(ofstream *out) const; 70 bool IsInParallelepiped(Vector offset, double *parallelepiped); 70 71 }; 71 72 -
src/vectorunittest.cpp
raba92d r13a574 55 55 void VectorTest::SimpleAlgebraTest() 56 56 { 57 Vector helper;58 57 double factor; 58 // copy vector 59 fixture.Init(2.,3.,4.); 60 CPPUNIT_ASSERT_EQUAL( Vector(2.,3.,4.), fixture ); 59 61 // summation and scaling 60 helper.CopyVector(&zero);61 helper.AddVector(&unit);62 CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );63 helper.CopyVector(&zero);64 helper.SubtractVector(&unit);65 CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );66 CPPUNIT_ASSERT_EQUAL( false, helper.IsZero() );67 helper.CopyVector(&zero);68 helper.AddVector(&zero);69 CPPUNIT_ASSERT_EQUAL( true, helper.IsZero() );70 helper.CopyVector(¬unit);71 helper.SubtractVector(&otherunit);72 CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );73 helper.CopyVector(&unit);74 helper.AddVector(&otherunit);75 CPPUNIT_ASSERT_EQUAL( false, helper.IsOne() );76 helper.CopyVector(¬unit);77 helper.SubtractVector(&unit);78 helper.SubtractVector(&otherunit);79 CPPUNIT_ASSERT_EQUAL( false, helper.IsZero() );80 helper.CopyVector(&unit);81 helper.Scale(0.98);82 CPPUNIT_ASSERT_EQUAL( false, helper.IsOne() );83 helper.CopyVector(&unit);84 helper.Scale(1.);85 CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );86 helper.CopyVector(&unit);62 fixture.CopyVector(&zero); 63 fixture.AddVector(&unit); 64 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 65 fixture.CopyVector(&zero); 66 fixture.SubtractVector(&unit); 67 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 68 CPPUNIT_ASSERT_EQUAL( false, fixture.IsZero() ); 69 fixture.CopyVector(&zero); 70 fixture.AddVector(&zero); 71 CPPUNIT_ASSERT_EQUAL( true, fixture.IsZero() ); 72 fixture.CopyVector(¬unit); 73 fixture.SubtractVector(&otherunit); 74 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 75 fixture.CopyVector(&unit); 76 fixture.AddVector(&otherunit); 77 CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() ); 78 fixture.CopyVector(¬unit); 79 fixture.SubtractVector(&unit); 80 fixture.SubtractVector(&otherunit); 81 CPPUNIT_ASSERT_EQUAL( false, fixture.IsZero() ); 82 fixture.CopyVector(&unit); 83 fixture.Scale(0.98); 84 CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() ); 85 fixture.CopyVector(&unit); 86 fixture.Scale(1.); 87 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 88 fixture.CopyVector(&unit); 87 89 factor = 0.98; 88 helper.Scale(factor);89 CPPUNIT_ASSERT_EQUAL( false, helper.IsOne() );90 helper.CopyVector(&unit);90 fixture.Scale(factor); 91 CPPUNIT_ASSERT_EQUAL( false, fixture.IsOne() ); 92 fixture.CopyVector(&unit); 91 93 factor = 1.; 92 helper.Scale(factor);93 CPPUNIT_ASSERT_EQUAL( true, helper.IsOne() );94 fixture.Scale(factor); 95 CPPUNIT_ASSERT_EQUAL( true, fixture.IsOne() ); 94 96 }; 95 97 … … 183 185 void VectorTest::LineIntersectionTest() 184 186 { 185 Vector helper;186 187 // plane at (0,0,0) normal to (1,0,0) cuts line from (0,0,0) to (2,1,0) at ??? 187 CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionWithPlane((ofstream *)&cout, &unit, &zero, &zero, &two) );188 CPPUNIT_ASSERT_EQUAL( zero, helper);188 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionWithPlane((ofstream *)&cout, &unit, &zero, &zero, &two) ); 189 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 189 190 190 191 // plane at (2,1,0) normal to (0,1,0) cuts line from (1,0,0) to (0,1,1) at ??? 191 CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionWithPlane((ofstream *)&cout, &otherunit, &two, &unit, ¬unit) );192 CPPUNIT_ASSERT_EQUAL( Vector(0., 1., 1.), helper);192 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionWithPlane((ofstream *)&cout, &otherunit, &two, &unit, ¬unit) ); 193 CPPUNIT_ASSERT_EQUAL( Vector(0., 1., 1.), fixture ); 193 194 194 195 // four vectors equal to zero 195 CPPUNIT_ASSERT_EQUAL( false, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &zero, &zero, &zero, &zero, NULL) );196 CPPUNIT_ASSERT_EQUAL( zero, helper);196 CPPUNIT_ASSERT_EQUAL( false, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &zero, &zero, &zero, &zero, NULL) ); 197 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 197 198 198 199 // four vectors equal to unit 199 CPPUNIT_ASSERT_EQUAL( false, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &unit, &unit, &unit, NULL) );200 CPPUNIT_ASSERT_EQUAL( zero, helper);200 CPPUNIT_ASSERT_EQUAL( false, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &unit, &unit, &unit, NULL) ); 201 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 201 202 202 203 // two equal lines 203 CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &two, NULL) );204 CPPUNIT_ASSERT_EQUAL( unit, helper);204 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &two, NULL) ); 205 CPPUNIT_ASSERT_EQUAL( unit, fixture ); 205 206 206 207 // line from (1,0,0) to (2,1,0) cuts line from (1,0,0) to (0,1,0) at ??? 207 CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &otherunit, NULL) );208 CPPUNIT_ASSERT_EQUAL( unit, helper);208 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &unit, &otherunit, NULL) ); 209 CPPUNIT_ASSERT_EQUAL( unit, fixture ); 209 210 210 211 // line from (1,0,0) to (0,0,0) cuts line from (0,0,0) to (2,1,0) at ??? 211 CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &zero, &zero, &two, NULL) );212 CPPUNIT_ASSERT_EQUAL( zero, helper);212 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &zero, &zero, &two, NULL) ); 213 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 213 214 214 215 // line from (1,0,0) to (2,1,0) cuts line from (0,0,0) to (0,1,0) at ??? 215 CPPUNIT_ASSERT_EQUAL( true, helper.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &zero, &otherunit, NULL) ); 216 CPPUNIT_ASSERT_EQUAL( Vector(0., -1., 0.), helper ); 217 }; 216 CPPUNIT_ASSERT_EQUAL( true, fixture.GetIntersectionOfTwoLinesOnPlane((ofstream *)&cout, &unit, &two, &zero, &otherunit, NULL) ); 217 CPPUNIT_ASSERT_EQUAL( Vector(0., -1., 0.), fixture ); 218 }; 219 220 /** UnitTest for vector rotations. 221 */ 222 void VectorTest::VectorRotationTest() 223 { 224 fixture.Init(-1.,0.,0.); 225 226 // zero vector does not change 227 fixture.CopyVector(&zero); 228 fixture.RotateVector(&unit, 1.); 229 CPPUNIT_ASSERT_EQUAL( zero, fixture ); 230 231 fixture.RotateVector(&two, 1.); 232 CPPUNIT_ASSERT_EQUAL( zero, fixture); 233 234 // vector on axis does not change 235 fixture.CopyVector(&unit); 236 fixture.RotateVector(&unit, 1.); 237 CPPUNIT_ASSERT_EQUAL( unit, fixture ); 238 239 fixture.RotateVector(&unit, 1.); 240 CPPUNIT_ASSERT_EQUAL( unit, fixture ); 241 242 // rotations 243 fixture.CopyVector(&otherunit); 244 fixture.RotateVector(&unit, M_PI); 245 CPPUNIT_ASSERT_EQUAL( Vector(0.,-1.,0.), fixture ); 246 247 fixture.CopyVector(&otherunit); 248 fixture.RotateVector(&unit, 2. * M_PI); 249 CPPUNIT_ASSERT_EQUAL( otherunit, fixture ); 250 251 fixture.CopyVector(&otherunit); 252 fixture.RotateVector(&unit, 0); 253 CPPUNIT_ASSERT_EQUAL( otherunit, fixture ); 254 255 fixture.Init(0.,0.,1.); 256 fixture.RotateVector(¬unit, M_PI); 257 CPPUNIT_ASSERT_EQUAL( otherunit, fixture ); 258 } 259 260 /** 261 * UnitTest for Vector::IsInParallelepiped(). 262 */ 263 void VectorTest::IsInParallelepipedTest() 264 { 265 double parallelepiped[NDIM*NDIM]; 266 parallelepiped[0] = 1; 267 parallelepiped[1] = 0; 268 parallelepiped[2] = 0; 269 parallelepiped[3] = 0; 270 parallelepiped[4] = 1; 271 parallelepiped[5] = 0; 272 parallelepiped[6] = 0; 273 parallelepiped[7] = 0; 274 parallelepiped[8] = 1; 275 276 fixture.CopyVector(zero); 277 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 278 fixture.Init(2.5,2.5,2.5); 279 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 280 fixture.Init(1.,1.,1.); 281 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 282 fixture.Init(3.5,3.5,3.5); 283 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 284 fixture.Init(2.,2.,2.); 285 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 286 fixture.Init(2.,3.,2.); 287 CPPUNIT_ASSERT_EQUAL( true, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 288 fixture.Init(-2.,2.,-1.); 289 CPPUNIT_ASSERT_EQUAL( false, fixture.IsInParallelepiped(Vector(2.,2.,2.), parallelepiped) ); 290 } 291 218 292 219 293 /********************************************** Main routine **************************************/ -
src/vectorunittest.hpp
raba92d r13a574 27 27 CPPUNIT_TEST ( ProjectionTest ); 28 28 CPPUNIT_TEST ( LineIntersectionTest ); 29 CPPUNIT_TEST ( VectorRotationTest ); 30 CPPUNIT_TEST ( IsInParallelepipedTest ); 29 31 CPPUNIT_TEST_SUITE_END(); 30 32 31 33 public: 32 33 34 void setUp(); 35 void tearDown(); 34 36 35 void UnityTest(); 36 void OperatorAlgebraTest(); 37 void SimpleAlgebraTest(); 38 void EuclidianScalarProductTest(); 39 void EuclidianNormTest(); 40 void EuclidianDistancesTest(); 41 void EuclidianAnglesTest(); 42 void ProjectionTest(); 43 void LineIntersectionTest(); 37 void UnityTest(); 38 void OperatorAlgebraTest(); 39 void SimpleAlgebraTest(); 40 void EuclidianScalarProductTest(); 41 void EuclidianNormTest(); 42 void EuclidianDistancesTest(); 43 void EuclidianAnglesTest(); 44 void ProjectionTest(); 45 void LineIntersectionTest(); 46 void VectorRotationTest(); 47 void IsInParallelepipedTest(); 44 48 45 49 private: 46 Vector zero; 47 Vector unit; 48 Vector otherunit; 49 Vector notunit; 50 Vector two; 50 // vector to execute tests on, may be modified during run 51 Vector fixture; 52 // never modify these during run, other tests might rely on them 53 Vector zero; 54 Vector unit; 55 Vector otherunit; 56 Vector notunit; 57 Vector two; 51 58 }; 52 59 -
tests/testsuite.at
raba92d r13a574 33 33 AT_DATA([test.conf], []) 34 34 AT_CHECK([../../molecuilder test.conf -e ./ -p test.xyz], 0, [ignore], [ignore]) 35 AT_CHECK([fgrep "Ion_Type1_1" test.conf], 0, [Ion_Type1_1 10.000000000 10.000000000 10.000000000 0 # Number in molecule035 AT_CHECK([fgrep "Ion_Type1_1" test.conf], 0, [Ion_Type1_1 10.000000000 10.000000000 10.000000000 0 # molecule nr 0 36 36 ], [ignore]) 37 AT_CHECK([ cptest.conf main_pcp_linux], 0, [ignore], [ignore])38 AT_DATA([input], [ aa 10. 10. 10. 137 AT_CHECK([mv test.conf main_pcp_linux], 0, [ignore], [ignore]) 38 AT_DATA([input], [maa 10. 10. 10. 1 39 39 s 40 40 q 41 41 ]) 42 AT_CHECK([../../molecuilder -e ./ <input], 0, [ignore], [ignore])42 AT_CHECK([../../molecuilder test.conf -e ./ <input], 0, [ignore], [ignore]) 43 43 AT_CHECK([diff main_pcp_linux test.conf], 0, [ignore], [ignore]) 44 44 # 4. test some more configuration 45 AT_CHECK([../../molecuilder test.conf -e ./ -t -s -b - F -E -c -b -a -U -T -u], 0, [ignore], [stderr])46 AT_CHECK([fgrep -c "Not enough or invalid" stderr], 0, [ 1045 AT_CHECK([../../molecuilder test.conf -e ./ -t -s -b -E -c -b -a -U -T -u], 0, [ignore], [stderr]) 46 AT_CHECK([fgrep -c "Not enough or invalid" stderr], 0, [9 47 47 ], [ignore]) 48 48 AT_CLEANUP … … 75 75 # 4. create the config and check it 76 76 AT_CHECK([../../molecuilder test.conf -e ./ -p test.xyz], 0, [ignore], [ignore]) 77 AT_CHECK([fgrep "Ion_Type1_4" test.conf], 0, [Ion_Type1_4 8.532785963 4.787886018 2.645886050 0 # Number in molecule677 AT_CHECK([fgrep "Ion_Type1_4" test.conf], 0, [Ion_Type1_4 8.532785963 4.787886018 2.645886050 0 # molecule nr 6 78 78 ], [ignore]) 79 79 AT_CHECK([fgrep "Ion_Type2_4" test.conf], 1, [ignore], [ignore])
Note:
See TracChangeset
for help on using the changeset viewer.