यह एक सरल समरूपता गणन समस्या है। मैं यहां पूरा बैकग्राउंड देता हूं, लेकिन क्वांटम केमिस्ट्री की कोई जानकारी नहीं है।
दो कण अभिन्न है: और इसमें निम्नलिखित 4 : मेरे पास एक फ़ंक्शन है जो अभिन्न की गणना करता है और उन्हें 1 डी सरणी में संग्रहीत करता है , निम्नानुसार अनुक्रमित:⟨ मैं जे | कश्मीर एल ⟩ = ∫ ψ * मैं ( एक्स ) ψ * j ( एक्स ' ) ψ कश्मीर ( एक्स ) ψ एल ( एक्स ' ) ⟨ मैं जे | कश्मीर एल ⟩ = ⟨ जे मैं | एल कश्मीर ⟩ = ⟨ कश्मीर एल | मैं जे ⟩ = ⟨ एल कश्मीर | जे मैं ⟩
int2
int2(ijkl2intindex2(i, j, k, l))
जहां फ़ंक्शन ijkl2intindex2
एक अद्वितीय सूचकांक देता है, उपरोक्त समरूपताओं को ध्यान में रखता है। केवल आवश्यकता यह है कि यदि आप i, j, k, l (1 से n प्रत्येक से) के सभी संयोजनों पर लूप करते हैं, तो यह int2
सरणी को लगातार भरेगा और यह सभी ijkl संयोजनों के लिए एक ही सूचकांक प्रदान करेगा जो उपरोक्त द्वारा संबंधित हैं 4 समरूपता।
फोरट्रान में मेरा वर्तमान कार्यान्वयन यहां है । यह बहुत धीमा है। किसी को पता है कि यह कैसे प्रभावी ढंग से करने के लिए? (किसी भी भाषा में)
संकेत: यदि ऑर्बिटल्स वास्तविक हैं, तो उपरोक्त अलावा, और आदान-प्रदान कर सकता है, इसलिए हमें कुल 8 मिलते हैं: और फिर कोई इसे अनुक्रमित करने के लिए एक बहुत तेज़ कार्य को कार्यान्वित कर सकता है, मेरा कार्यान्वयन यहाँ देखें । मैं उन मामलों के लिए कुछ कुशल अनुक्रमण योजना खोजना चाहता हूँ जब कक्षाएँ वास्तविक नहीं होती हैं।
नोट: जिन कार्यों को मैंने कार्यान्वित किया है, वे वास्तव में चार संख्याओं , , , को तथाकथित "रसायन शास्त्र" में स्वीकार करते हैं , , अर्थात और तर्कों का परस्पर संबंध है। लेकिन यह महत्वपूर्ण नहीं है।j कश्मीर एल ( मैं j | कश्मीर एल ) = ⟨ मैं k | जे एल ⟩ j कश्मीर