source: ThirdParty/mpqc_open/src/lib/chemistry/qc/dft/clkstmpl.h@ 482400e

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests Automaking_mpqc_open 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 482400e 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: 1.9 KB
Line 
1
2namespace sc {
3
4class LocalCLKSContribution {
5 private:
6 double * const gmat;
7 double * const pmat;
8 double a0;
9
10 public:
11 LocalCLKSContribution(double *g, double *p, double a) :
12 gmat(g), pmat(p), a0(a) {}
13 ~LocalCLKSContribution() {}
14
15 void set_bound(double, double) {}
16
17 inline void cont1(int ij, int kl, double val) {
18 gmat[ij] += val*pmat[kl];
19 gmat[kl] += val*pmat[ij];
20 }
21
22 inline void cont2(int ij, int kl, double val) {
23 val *= -0.25*a0;
24 gmat[ij] += val*pmat[kl];
25 gmat[kl] += val*pmat[ij];
26 }
27
28 inline void cont3(int ij, int kl, double val) {
29 val *= -0.5*a0;
30 gmat[ij] += val*pmat[kl];
31 gmat[kl] += val*pmat[ij];
32 }
33
34 inline void cont4(int ij, int kl, double val) {
35 val *= 1.0 - 0.25*a0;
36 gmat[ij] += val*pmat[kl];
37 gmat[kl] += val*pmat[ij];
38 }
39
40 inline void cont5(int ij, int kl, double val) {
41 val *= 1.0 - 0.5*a0;
42 gmat[ij] += val*pmat[kl];
43 gmat[kl] += val*pmat[ij];
44 }
45};
46
47class LocalCLKSEnergyContribution {
48 private:
49 double * const pmat;
50 double a0;
51
52 public:
53 double ec;
54 double ex;
55
56 LocalCLKSEnergyContribution(double *p, double a) : pmat(p), a0(a) {
57 ec=ex=0;
58 }
59 ~LocalCLKSEnergyContribution() {}
60
61 void set_bound(double, double) {}
62
63 inline void cont1(int ij, int kl, double val) {
64 ec += val*pmat[ij]*pmat[kl];
65 }
66
67 inline void cont2(int ij, int kl, double val) {
68 ex -= a0*0.25*val*pmat[ij]*pmat[kl];
69 }
70
71 inline void cont3(int ij, int kl, double val) {
72 ex -= a0*0.5*val*pmat[ij]*pmat[kl];
73 }
74
75 inline void cont4(int ij, int kl, double val) {
76 ec += val*pmat[ij]*pmat[kl];
77 ex -= a0*0.25*val*pmat[ij]*pmat[kl];
78 }
79
80 inline void cont5(int ij, int kl, double val) {
81 ec += val*pmat[ij]*pmat[kl];
82 ex -= a0*0.5*val*pmat[ij]*pmat[kl];
83 }
84};
85
86}
Note: See TracBrowser for help on using the repository browser.