• R/O
  • SSH
  • HTTPS

molds: Commit


Commit MetaInfo

Revision1819 (tree)
Time2016-07-16 21:57:34
Authormikiya_fujii

Log Message

mullikens input for many and sequential excited states. #36466

Change Summary

Incremental Difference

--- trunk/doc/README.txt (revision 1818)
+++ trunk/doc/README.txt (revision 1819)
@@ -572,8 +572,14 @@
572572 Note that "mulliken 0" is ignored because 0th excited state is the ground state.
573573 The default setting of this "mulliken" option is nothing.
574574
575+ "mullikens" is a set of indeces of the mulliken population analysis in the excites states.
576+ To calculate mulliken population for many and sequencial excited states,
577+ this "mullikens" is prepared as
578+ "mullikens first_elec_index last_elec_index".
579+ The default value of the "mullikens" is also not set
580+
575581 "unpaired_electron_population" is an option of unpaired electron population(UEP) analysis of the excited state.
576- When "unpaired electron population yes" and "mulliken x" are included in CIS-directive,
582+ When "unpaired electron population yes" and "mulliken x" (amd/or "mullikens x y") are included in CIS-directive,
577583 the UEP of xth excited state is calculated.
578584 By multiple indication of these mulliken option, the UEP on multiple excited states are possible.
579585 Note that the UEP on ground state is ignored.
@@ -602,6 +608,7 @@
602608 norm_tol 0.000001
603609 mulliken 1
604610 mulliken 2
611+ mullikens 1 3
605612 unpaired_electron_population yes
606613 sum_charges 0 4
607614 sum_charges 3 7
--- trunk/src/base/InputParser.cpp (revision 1818)
+++ trunk/src/base/InputParser.cpp (revision 1819)
@@ -393,6 +393,7 @@
393393 this->stringCISAllTransitionDipoleMoments = "all_transition_dipole_moments";
394394 this->stringCISNumPrintCoefficients = "num_print_coefficients";
395395 this->stringCISMulliken = "mulliken";
396+ this->stringCISMullikens = "mullikens";
396397 this->stringCISUnpairedPop = "unpaired_electron_population";
397398 this->stringCISSumCharges = "sum_charges";
398399 this->stringCISScaLapack = "scalapack";
@@ -1059,6 +1060,17 @@
10591060 }
10601061 parseIndex++;
10611062 }
1063+ // mullikens indeces
1064+ if((*inputTerms)[parseIndex].compare(this->stringCISMullikens) == 0){
1065+ int groundStateIndex = 0;
1066+ int firstElecIndex = atoi((*inputTerms)[parseIndex+1].c_str());
1067+ int lastElecIndex = atoi((*inputTerms)[parseIndex+2].c_str());
1068+ if(firstElecIndex == groundStateIndex){
1069+ firstElecIndex = 1;
1070+ }
1071+ Parameters::GetInstance()->AddElectronicStateIndecesMullikenCIS(firstElecIndex, lastElecIndex);
1072+ parseIndex += 2;
1073+ }
10621074 // unpaired electron population
10631075 if((*inputTerms)[parseIndex].compare(this->stringCISUnpairedPop) == 0){
10641076 if((*inputTerms)[parseIndex+1].compare(this->stringYES) == 0){
--- trunk/src/base/Parameters.h (revision 1818)
+++ trunk/src/base/Parameters.h (revision 1819)
@@ -153,7 +153,8 @@
153153 inline bool RequiresAllTransitionDipoleMomentsCIS() const {return this->requiresAllTransitionDipoleMomentsCIS;}
154154 inline void SetRequiresAllTransitionDipoleMomentsCIS(bool requires){this->requiresAllTransitionDipoleMomentsCIS = requires;}
155155 std::vector<int>* GetElectronicStateIndecesMullikenCIS() const;
156- void AddElectronicStateIndexMullikenCIS(int electronicStateIndex);
156+ void AddElectronicStateIndexMullikenCIS(int elecIndex);
157+ void AddElectronicStateIndecesMullikenCIS(int firstElecIndex, int lastElecIndex);
157158 bool RequiresMullikenCIS() const;
158159 inline bool RequiresUnpairedPopCIS() const {return this->requiresUnpairedPopCIS;}
159160 bool RequiresSumChargesCIS() const;
--- trunk/src/base/InputParser.h (revision 1818)
+++ trunk/src/base/InputParser.h (revision 1819)
@@ -299,6 +299,7 @@
299299 std::string stringCISAllTransitionDipoleMoments;
300300 std::string stringCISNumPrintCoefficients;
301301 std::string stringCISMulliken;
302+ std::string stringCISMullikens;
302303 std::string stringCISUnpairedPop;
303304 std::string stringCISSumCharges;
304305 std::string stringCISScaLapack;
--- trunk/src/base/Parameters.cpp (revision 1818)
+++ trunk/src/base/Parameters.cpp (revision 1819)
@@ -435,13 +435,22 @@
435435 return this->electronicStateIndecesMullikenCIS;
436436 }
437437
438-void Parameters::AddElectronicStateIndexMullikenCIS(int electronicStateIndex){
438+void Parameters::AddElectronicStateIndexMullikenCIS(int elecIndex){
439439 if(this->electronicStateIndecesMullikenCIS==NULL){
440440 this->electronicStateIndecesMullikenCIS = new vector<int>;
441441 }
442- this->electronicStateIndecesMullikenCIS->push_back(electronicStateIndex);
442+ this->electronicStateIndecesMullikenCIS->push_back(elecIndex);
443443 }
444444
445+void Parameters::AddElectronicStateIndecesMullikenCIS(int firstElecIndex, int lastElecIndex){
446+ if(this->electronicStateIndecesMullikenCIS==NULL){
447+ this->electronicStateIndecesMullikenCIS = new vector<int>;
448+ }
449+ for(int elecIndex=firstElecIndex; elecIndex<=lastElecIndex; elecIndex++){
450+ this->electronicStateIndecesMullikenCIS->push_back(elecIndex);
451+ }
452+}
453+
445454 bool Parameters::RequiresMullikenCIS() const{
446455 return (this->electronicStateIndecesMullikenCIS!=NULL &&
447456 0<this->electronicStateIndecesMullikenCIS->size());
Show on old repository browser