Changeset 775d133
- Timestamp:
- Feb 21, 2010, 1:34:41 PM (15 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:
- b11d3b
- Parents:
- 164a33
- Location:
- src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/analysis_correlation.cpp
r164a33 r775d133 372 372 *file << "BinStart\tCount" << endl; 373 373 for (BinPairMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) { 374 *file << runner->first << "\t" << runner->second << endl;374 *file << setprecision(8) << runner->first << "\t" << runner->second << endl; 375 375 } 376 376 }; … … 385 385 *file << "BinStart\tAtom1\tAtom2" << endl; 386 386 for (PairCorrelationMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) { 387 *file << runner->first << "\t" << *(runner->second.first) << "\t" << *(runner->second.second) << endl;387 *file << setprecision(8) << runner->first << "\t" << *(runner->second.first) << "\t" << *(runner->second.second) << endl; 388 388 } 389 389 }; … … 400 400 *file << runner->first; 401 401 for (int i=0;i<NDIM;i++) 402 *file << "\t" << (runner->second.first->node->x[i] - runner->second.second->x[i]);402 *file << "\t" << setprecision(8) << (runner->second.first->node->x[i] - runner->second.second->x[i]); 403 403 *file << endl; 404 404 } … … 414 414 *file << "BinStart\tTriangle" << endl; 415 415 for (CorrelationToSurfaceMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) { 416 *file << runner->first << "\t" << *(runner->second.first) << "\t" << *(runner->second.second) << endl;417 } 418 }; 419 416 *file << setprecision(8) << runner->first << "\t" << *(runner->second.first) << "\t" << *(runner->second.second) << endl; 417 } 418 }; 419 -
src/boundary.cpp
r164a33 r775d133 789 789 * \param *filler molecule which the box is to be filled with 790 790 * \param configuration contains box dimensions 791 * \param MaxDistance fills in molecules only up to this distance (set to -1 if whole of the domain) 791 792 * \param distance[NDIM] distance between filling molecules in each direction 792 793 * \param boundary length of boundary zone between molecule and filling mollecules … … 797 798 * \return *mol pointer to new molecule with filled atoms 798 799 */ 799 molecule * FillBoxWithMolecule(MoleculeListClass *List, molecule *filler, config &configuration, const double distance[NDIM], const double boundary, const double RandomAtomDisplacement, const double RandomMolDisplacement, const bool DoRandomRotation)800 molecule * FillBoxWithMolecule(MoleculeListClass *List, molecule *filler, config &configuration, const double MaxDistance, const double distance[NDIM], const double boundary, const double RandomAtomDisplacement, const double RandomMolDisplacement, const bool DoRandomRotation) 800 801 { 801 802 Info FunctionInfo(__func__); … … 862 863 } else { 863 864 const double distance = (TesselStruct[i]->GetDistanceSquaredToSurface(CurrentPosition, LCList[i])); 864 FillIt = FillIt && (distance > boundary*boundary) ;865 FillIt = FillIt && (distance > boundary*boundary) && ((MaxDistance < 0) || (MaxDistance*MaxDistance > distance)); 865 866 if (FillIt) { 866 867 Log() << Verbose(1) << "INFO: Position at " << CurrentPosition << " is outer point." << endl; 867 868 } else { 868 Log() << Verbose(1) << "INFO: Position at " << CurrentPosition << " is inner point or within boundary." << endl;869 Log() << Verbose(1) << "INFO: Position at " << CurrentPosition << " is inner point, within boundary or outside of MaxDistance." << endl; 869 870 break; 870 871 } -
src/boundary.hpp
r164a33 r775d133 49 49 50 50 double ConvexizeNonconvexEnvelope(class Tesselation *&TesselStruct, const molecule * const mol, const char * const filename); 51 molecule * FillBoxWithMolecule(MoleculeListClass *List, molecule *filler, config &configuration, const double distance[NDIM], const double boundary, const double RandomAtomDisplacement, const double RandomMolDisplacement, const bool DoRandomRotation);51 molecule * FillBoxWithMolecule(MoleculeListClass *List, molecule *filler, config &configuration, const double MaxDistance, const double distance[NDIM], const double boundary, const double RandomAtomDisplacement, const double RandomMolDisplacement, const bool DoRandomRotation); 52 52 void FindConvexBorder(const molecule* const mol, Tesselation *&TesselStruct, const LinkedCell *LCList, const char *filename); 53 53 Vector* FindEmbeddingHole(MoleculeListClass *mols, molecule *srcmol); -
src/builder.cpp
r164a33 r775d133 1387 1387 enum ConfigStatus configPresent = absent; 1388 1388 clock_t start,end; 1389 double MaxDistance = -1; 1389 1390 int argptr; 1390 1391 molecule *mol = NULL; … … 1412 1413 Log() << Verbose(0) << "\t-B xx xy xz yy yz zz\tBound atoms by domain with given symmetric matrix of (xx,xy,xz,yy,yz,zz)." << endl; 1413 1414 Log() << Verbose(0) << "\t-c x1 x2 x3\tCenter atoms in domain with a minimum distance to boundary of (x1,x2,x3)." << endl; 1414 Log() << Verbose(0) << "\t-C <type> [par ms] <output> <bin output>\tPair Correlation analysis." << endl;1415 Log() << Verbose(0) << "\t-C <type> [params] <output> <bin output> <BinStart> <BinEnd>\tPair Correlation analysis." << endl; 1415 1416 Log() << Verbose(0) << "\t-d x1 x2 x3\tDuplicate cell along each axis by given factor." << endl; 1416 1417 Log() << Verbose(0) << "\t-D <bond distance>\tDepth-First-Search Analysis of the molecule, giving cycles and tree/back edges." << endl; … … 1419 1420 Log() << Verbose(0) << "\t-f <dist> <order>\tFragments the molecule in BOSSANOVA manner (with/out rings compressed) and stores config files in same dir as config (return code 0 - fragmented, 2 - no fragmentation necessary)." << endl; 1420 1421 Log() << Verbose(0) << "\t-F <dist_x> <dist_y> <dist_z> <epsilon> <randatom> <randmol> <DoRotate>\tFilling Box with water molecules." << endl; 1422 Log() << Verbose(0) << "\t-FF <MaxDistance> <dist_x> <dist_y> <dist_z> <epsilon> <randatom> <randmol> <DoRotate>\tFilling Box with water molecules." << endl; 1421 1423 Log() << Verbose(0) << "\t-g <file>\tParses a bond length table from the given file." << endl; 1422 1424 Log() << Verbose(0) << "\t-h/-H/-?\tGive this help screen." << endl; … … 1680 1682 if ((argptr >= argc)) { 1681 1683 ExitFlag = 255; 1682 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C <type: E/P/S> [more params] <output> <bin output> " << endl;1684 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C <type: E/P/S> [more params] <output> <bin output> <BinStart> <BinEnd>" << endl; 1683 1685 performCriticalExit(); 1684 1686 } else { … … 1686 1688 case 'E': 1687 1689 { 1688 if ((argptr+ 4 >= argc) || (!IsValidNumber(argv[argptr+1])) ||(!IsValidNumber(argv[argptr+2])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-')) {1690 if ((argptr+6 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+5])) || (!IsValidNumber(argv[argptr+6])) || (!IsValidNumber(argv[argptr+2])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-')) { 1689 1691 ExitFlag = 255; 1690 1692 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C E <Z1> <Z2> <output> <bin output>" << endl; … … 1693 1695 ofstream output(argv[argptr+3]); 1694 1696 ofstream binoutput(argv[argptr+4]); 1695 1696 element *elemental = periode->FindElement((const int) atoi(argv[argptr])); 1697 element *elemental2 = periode->FindElement((const int) atoi(argv[argptr+1])); 1697 const double BinStart = atof(argv[argptr+5]); 1698 const double BinEnd = atof(argv[argptr+6]); 1699 1700 element *elemental = periode->FindElement((const int) atoi(argv[argptr+1])); 1701 element *elemental2 = periode->FindElement((const int) atoi(argv[argptr+2])); 1698 1702 PairCorrelationMap *correlationmap = PairCorrelation(molecules, elemental, elemental2); 1699 1703 //OutputCorrelationToSurface(&output, correlationmap); 1700 BinPairMap *binmap = BinData( correlationmap, 0.5, 0., 0.);1704 BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd ); 1701 1705 OutputCorrelation ( &binoutput, binmap ); 1702 1706 output.close(); … … 1704 1708 delete(binmap); 1705 1709 delete(correlationmap); 1706 argptr+= 5;1710 argptr+=7; 1707 1711 } 1708 1712 } … … 1711 1715 case 'P': 1712 1716 { 1713 if ((argptr+ 6 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-') || (argv[argptr+5][0] == '-') || (argv[argptr+6][0] == '-')) {1717 if ((argptr+8 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) || (!IsValidNumber(argv[argptr+3])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+7])) || (!IsValidNumber(argv[argptr+8])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-') || (argv[argptr+4][0] == '-') || (argv[argptr+5][0] == '-') || (argv[argptr+6][0] == '-')) { 1714 1718 ExitFlag = 255; 1715 1719 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C P <Z1> <x> <y> <z> <output> <bin output>" << endl; … … 1718 1722 ofstream output(argv[argptr+5]); 1719 1723 ofstream binoutput(argv[argptr+6]); 1720 1721 element *elemental = periode->FindElement((const int) atoi(argv[argptr])); 1724 const double BinStart = atof(argv[argptr+7]); 1725 const double BinEnd = atof(argv[argptr+8]); 1726 1727 element *elemental = periode->FindElement((const int) atoi(argv[argptr+1])); 1722 1728 Vector *Point = new Vector((const double) atof(argv[argptr+1]),(const double) atof(argv[argptr+2]),(const double) atof(argv[argptr+3])); 1723 1729 CorrelationToPointMap *correlationmap = CorrelationToPoint(molecules, elemental, Point); 1724 1730 //OutputCorrelationToSurface(&output, correlationmap); 1725 BinPairMap *binmap = BinData( correlationmap, 0.5, 0., 0.);1731 BinPairMap *binmap = BinData( correlationmap, 0.5, BinStart, BinEnd ); 1726 1732 OutputCorrelation ( &binoutput, binmap ); 1727 1733 output.close(); … … 1730 1736 delete(binmap); 1731 1737 delete(correlationmap); 1732 argptr+= 7;1738 argptr+=9; 1733 1739 } 1734 1740 } … … 1737 1743 case 'S': 1738 1744 { 1739 if ((argptr+ 3 >= argc) || (!IsValidNumber(argv[argptr+1])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-')) {1745 if ((argptr+5 >= argc) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+4])) || (!IsValidNumber(argv[argptr+5])) || (argv[argptr+1][0] == '-') || (argv[argptr+2][0] == '-') || (argv[argptr+3][0] == '-')) { 1740 1746 ExitFlag = 255; 1741 1747 eLog() << Verbose(0) << "Not enough or invalid arguments given for pair correlation analysis: -C S <Z> <output> <bin output>" << endl; … … 1745 1751 ofstream binoutput(argv[argptr+3]); 1746 1752 const double radius = 5.; 1747 1753 const double BinStart = atof(argv[argptr+4]); 1754 const double BinEnd = atof(argv[argptr+5]); 1748 1755 1749 1756 // get the boundary … … 1766 1773 } 1767 1774 LCList = new LinkedCell(Boundary, 2.*radius); 1768 element *elemental = periode->FindElement((const int) atoi(argv[argptr ]));1775 element *elemental = periode->FindElement((const int) atoi(argv[argptr+1])); 1769 1776 FindNonConvexBorder(Boundary, TesselStruct, LCList, radius, NULL); 1770 1777 int ranges[NDIM] = {1,1,1}; 1771 1778 CorrelationToSurfaceMap *surfacemap = PeriodicCorrelationToSurface( molecules, elemental, TesselStruct, LCList, ranges ); 1772 //OutputCorrelationToSurface(&output, surfacemap);1773 BinPairMap *binmap = BinData( surfacemap, 0.5, 0., 0.);1779 OutputCorrelationToSurface(&output, surfacemap); 1780 BinPairMap *binmap = BinData( surfacemap, 0.5, BinStart, BinEnd ); 1774 1781 OutputCorrelation ( &binoutput, binmap ); 1775 1782 output.close(); … … 1782 1789 delete(binmap); 1783 1790 delete(surfacemap); 1784 argptr+= 4;1791 argptr+=6; 1785 1792 } 1786 1793 } … … 1811 1818 case 'F': 1812 1819 if (ExitFlag == 0) ExitFlag = 1; 1820 MaxDistance = -1; 1821 if (argv[argptr-1][2] == 'F') { 1822 // fetch first argument as max distance to surface 1823 MaxDistance = atof(argv[argptr++]); 1824 Log() << Verbose(0) << "Filling with maximum layer distance of " << MaxDistance << "." << endl; 1825 } 1813 1826 if (argptr+6 >=argc) { 1814 1827 ExitFlag = 255; … … 1844 1857 for (int i=0;i<NDIM;i++) 1845 1858 distance[i] = atof(argv[argptr+i]); 1846 Filling = FillBoxWithMolecule(molecules, filler, configuration, distance, atof(argv[argptr+3]), atof(argv[argptr+4]), atof(argv[argptr+5]), atoi(argv[argptr+6]));1859 Filling = FillBoxWithMolecule(molecules, filler, configuration, MaxDistance, distance, atof(argv[argptr+3]), atof(argv[argptr+4]), atof(argv[argptr+5]), atoi(argv[argptr+6])); 1847 1860 if (Filling != NULL) { 1848 1861 Filling->ActiveFlag = false;
Note:
See TracChangeset
for help on using the changeset viewer.