source: ThirdParty/mpqc_open/src/lib/chemistry/molecule/symmetrize.cc@ 41bd14

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_levmar Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 41bd14 was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 2.8 KB
Line 
1//
2// symmetrize.cc
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Edward Seidl <seidl@janed.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#include <iostream>
29#include <string.h>
30
31#include <util/misc/formio.h>
32#include <chemistry/molecule/molecule.h>
33
34using namespace std;
35using namespace sc;
36
37int
38main(int argc, char *argv[])
39{
40 int i;
41
42 if (argc < 2) {
43 ExEnv::err0() << "usage: " << argv[0]
44 << " input_file { keyword { tolerance } }" << endl;
45 ExEnv::err0() << " default keyword = \"molecule\"" << endl;
46 ExEnv::err0() << " default tolerance = \"1.0e-4\"" << endl;
47 return 1;
48 }
49
50 char *infile = argv[1];
51 Ref<KeyVal> kv(new ParsedKeyVal(infile));
52
53 const char *keyword = argc>2?argv[2]:"molecule";
54 Ref<Molecule> mol; mol << kv->describedclassvalue(keyword);
55
56 const char *ctol = argc>3?argv[3]:"1.0e-4";
57 double tol = atof(ctol);
58
59 ExEnv::out0() << "Original molecule:" << endl;
60 mol->print();
61
62 Ref<PointGroup> highestpg = mol->highest_point_group(tol);
63 ExEnv::out0() << "Point Group is " << highestpg->symbol() << endl;
64
65 mol->set_point_group(highestpg, 10*tol);
66
67 ExEnv::out0() << "Molecule at center of mass in highest point group:" << endl;
68 mol->print();
69
70 mol->cleanup_molecule();
71 ExEnv::out0() << "cleaned molecule\n";
72 mol->print();
73
74 int nunique = mol->nunique();
75
76 mol->transform_to_principal_axes();
77 ExEnv::out0() << "cleaned molecule transformed to principle axes\n";
78 mol->print();
79
80 ExEnv::out0() << "resymmetrized molecule\n";
81 mol->symmetrize();
82 mol->print();
83
84 mol->transform_to_symmetry_frame();
85 ExEnv::out0() << "cleaned molecule transformed to symmetry frame\n";
86 mol->print();
87
88 ExEnv::out0() << scprintf("\nnunique=%d: ",nunique);
89 for (i=0; i < nunique; i++) ExEnv::out0() << scprintf(" %d",mol->unique(i)+1);
90 ExEnv::out0() << endl;
91
92 return 0;
93}
94
95/////////////////////////////////////////////////////////////////////////////
96
97// Local Variables:
98// mode: c++
99// c-file-style: "ETS"
100// End:
Note: See TracBrowser for help on using the repository browser.