source: ThirdParty/mpqc_open/src/lib/chemistry/qc/scf/uhftmpl.h@ bbc982

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 bbc982 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.6 KB
Line 
1
2namespace sc {
3
4class LocalUHFContribution {
5 private:
6 double * const gmata;
7 double * const gmatb;
8 double * const pmata;
9 double * const pmatb;
10
11 public:
12 LocalUHFContribution(double *ga, double *pa, double *gb, double *pb) :
13 gmata(ga), gmatb(gb), pmata(pa), pmatb(pb) {}
14 ~LocalUHFContribution() {}
15
16 void set_bound(double,double) {};
17
18 inline void cont1(int ij, int kl, double val) {
19 gmata[ij] += val*(pmata[kl]+pmatb[kl]);
20 gmata[kl] += val*(pmata[ij]+pmatb[ij]);
21
22 gmatb[ij] += val*(pmata[kl]+pmatb[kl]);
23 gmatb[kl] += val*(pmata[ij]+pmatb[ij]);
24 }
25
26 inline void cont2(int ij, int kl, double val) {
27 val *= 0.5;
28 gmata[ij] -= val*pmata[kl];
29 gmata[kl] -= val*pmata[ij];
30
31 gmatb[ij] -= val*pmatb[kl];
32 gmatb[kl] -= val*pmatb[ij];
33 }
34
35 inline void cont3(int ij, int kl, double val) {
36 gmata[ij] -= val*pmata[kl];
37 gmata[kl] -= val*pmata[ij];
38
39 gmatb[ij] -= val*pmatb[kl];
40 gmatb[kl] -= val*pmatb[ij];
41 }
42
43 inline void cont4(int ij, int kl, double val) {
44 cont1(ij,kl,val);
45 cont2(ij,kl,val);
46 }
47
48 inline void cont5(int ij, int kl, double val) {
49 cont1(ij,kl,val);
50 cont3(ij,kl,val);
51 }
52};
53
54class LocalUHFEnergyContribution {
55 private:
56 double * const pmata;
57 double * const pmatb;
58
59 public:
60 double ec;
61 double ex;
62
63 LocalUHFEnergyContribution(double *a, double *b) : pmata(a), pmatb(b) {
64 ec=ex=0;
65 }
66
67 ~LocalUHFEnergyContribution() {}
68
69 void set_bound(double,double) {};
70
71 inline void cont1(int ij, int kl, double val) {
72 ec += val*(pmata[ij]+pmatb[ij])*(pmata[kl]+pmatb[kl]);
73 }
74
75 inline void cont2(int ij, int kl, double val) {
76 ex -= 0.5*val*(pmata[ij]*pmata[kl]+pmatb[ij]*pmatb[kl]);
77 }
78
79 inline void cont3(int ij, int kl, double val) {
80 ex -= val*(pmata[ij]*pmata[kl]+pmatb[ij]*pmatb[kl]);
81 }
82
83 inline void cont4(int ij, int kl, double val) {
84 cont1(ij,kl,val);
85 cont2(ij,kl,val);
86 }
87
88 inline void cont5(int ij, int kl, double val) {
89 cont1(ij,kl,val);
90 cont3(ij,kl,val);
91 }
92};
93
94class LocalUHFGradContribution {
95 private:
96 double * const pmata;
97 double * const pmatb;
98
99 public:
100 LocalUHFGradContribution(double *a, double *b) : pmata(a), pmatb(b) {}
101 ~LocalUHFGradContribution() {}
102
103 inline double cont1(int ij, int kl) {
104 return (pmata[ij]*pmata[kl])+(pmatb[ij]*pmatb[kl]) +
105 (pmata[ij]*pmatb[kl])+(pmatb[ij]*pmata[kl]);
106 }
107
108 inline double cont2(int ij, int kl) {
109 return 2*((pmata[ij]*pmata[kl])+(pmatb[ij]*pmatb[kl]));
110 }
111};
112
113}
Note: See TracBrowser for help on using the repository browser.