मैंने कुछ विस्तार से फालस्टेड सिम्युलेटर के कोड की जांच की है। सर्किट के लिए जो केवल रैखिक घटकों जैसे प्रतिरोधों, स्विचेस और वोल्टेज स्रोतों से युक्त होते हैं (तर्क के लिए गेट-गेट आउटपुट जैसी चीजें ग्राउंड-कनेक्टेड वोल्टेज स्रोत मानी जाती हैं) सिमुलेटर प्रत्येक सर्किट नोड, वोल्टेज स्रोत (दो नोड्स को जोड़ता है) का संबंध रखता है , या तार (इसी तरह) एक रेखीय समीकरण और एक चर को परिभाषित करते हुए, जैसे समीकरणों की संख्या और चर की संख्या हमेशा बराबर होती है। एक सर्किट नोड के लिए, चर नोड का वोल्टेज है, और समीकरण किसी भी वर्तमान स्रोतों द्वारा इंजेक्ट किए गए कुल वर्तमान के बराबर कुल प्रवाह की गणना करता है। एक वोल्टेज स्रोत या तार के लिए (एक तार को वोल्टेज स्रोत के रूप में संभाला जा सकता है जहां संभावित अंतर शून्य है),
वर्तमान स्रोतों और प्रतिरोधों जैसी चीजें प्रतिरोधों या चर के साथ जुड़ी नहीं हैं। इसके बजाय, वर्तमान स्रोत एक सर्किट नोड के लिए आवश्यक कुल वर्तमान को बढ़ाते हैं (याद रखें कि प्रत्येक सर्किट नोड में एक समीकरण है जो कुल प्रवाह और अंदर प्रवाह का मूल्यांकन करता है) और दूसरे के लिए इसे घटाता है। रेसिस्टर्स थोड़े पेचीदा होते हैं: प्रत्येक समापन बिंदु के समीकरण के लिए, रोकनेवाला प्रत्येक समापन बिंदु के नोड वोल्टेज के लिए शर्तें जोड़ता है।
उदाहरण के लिए, नोड्स 1 और 2 को जोड़ने वाला 100-ओम अवरोधक, यह कहेगा कि नोड 1 पर प्रत्येक वोल्ट वृद्धि में नोड 1 में वर्तमान प्रवाह में 0.01 एम्पियर की कमी होगी और एक समान राशि से नोड 2 में वर्तमान प्रवाह में वृद्धि होगी। इसी तरह, नोड 2 पर प्रत्येक वोल्ट वृद्धि में प्रवाह 1 में वर्तमान प्रवाह 0.01 amps से बढ़ जाएगा और एक समान राशि से नोड 2 में वर्तमान प्रवाह में कमी होगी।
नोड 1 और 5 को जोड़ने वाली 10 वोल्ट की आपूर्ति के साथ एक सर्किट पर विचार करें, और नोड 1 और 2, 2 और 3, 2 और 4, और 3 को जोड़ने वाले 100 ओम प्रतिरोधों और 4. मान लें कि आगे नोड 1 पर ग्राउंड आइकन है। इस प्रकार:
neg ---+-1---R100---2---R100---3---100---4---pos
gnd | |
+---------100--------+
दो "वोल्टेज स्रोत" होंगे: ग्राउंड लीड और 10 वोल्ट की आपूर्ति (जिसे क्रमशः समीकरण / चर 5 और 6 के रूप में माना जाता है)। इस प्रकार समीकरण होंगे:
-X1*0.01 +X5 -X6 = 0 Node 1
+X1*0.01 -X2*0.01 +X4*0.01 = 0 Node 2
+X2*0.01 -X3*0.01 +X4*0.01 = 0 Node 3
+X2*0.01 -X4*0.01 +X6 = 0 Node 4
-X1*1 = 0 Volts 5 (voltage between 1 and gnd)
-X1*1 +X4*1 = 10 Volts 6 (voltage between 1 and 4)
समीकरण की इस प्रणाली को एक NxN मैट्रिक्स और एक N आइटम सरणी के रूप में दर्शाया जा सकता है। प्रत्येक समीकरण मैट्रिक्स में एक पंक्ति द्वारा दर्शाया जाता है, प्रत्येक पंक्ति के मूल्यों के साथ प्रत्येक चर के गुणांक का प्रतिनिधित्व करता है। प्रत्येक समीकरण के दाईं ओर के हिस्से को अलग-अलग सरणी में संग्रहीत किया जाता है। समीकरणों को हल करने से पहले, प्रत्येक को प्रत्येक नोड में बहने वाली शुद्ध धारा (इस मामले में शून्य), और वोल्टेज स्रोतों से जुड़े नोड्स के जोड़े के बीच वोल्टेज का अंतर पता चल जाएगा। समीकरणों को हल करने से प्रत्येक नोड पर वोल्टेज निकलेगा और प्रत्येक वोल्टेज स्रोत के माध्यम से प्रवाह होगा।
यदि सर्किट में कैपेसिटर होते हैं, तो उनमें से प्रत्येक को कम-मूल्य रोकनेवाला के साथ श्रृंखला में वोल्टेज स्रोत माना जाएगा; प्रत्येक सिमुलेशन स्टेप के बाद, वोल्टेज स्रोत को वर्तमान की मात्रा के अनुसार समायोजित किया जाएगा जो इसके माध्यम से बहती है। इंडक्टर्स को उच्च-मूल्य प्रतिरोधक के रूप में माना जाएगा जो एक में करंट को फीड करते हैं और दूसरे को बाहर निकालते हैं (वर्तमान की मात्रा प्रतिरोध के पार वोल्टेज के अनुसार समायोजित की जा रही है)। कैपेसिटर और इंडिकेटर्स दोनों के लिए, प्रतिरोध का मूल्य एक सिमुलेशन कदम द्वारा दर्शाए गए समय की मात्रा से नियंत्रित किया जाएगा।
ट्रांजिस्टर जैसे अधिक जटिल सर्किट तत्वों को वोल्टेज स्रोतों, वर्तमान स्रोतों और प्रतिरोधों के संयोजन के रूप में माना जाता है। सरल सर्किट तत्वों के विपरीत, जो सिमुलेशन टाइम स्टेप के अनुसार एक बार सब कुछ संसाधित होने देते हैं, ट्रांजिस्टर जैसे तत्व अपने प्रभावी प्रतिरोध आदि की गणना करते हैं, जो वे देख रहे वोल्टेज और धाराओं पर आधारित होते हैं, सभी परिणामी समीकरणों का मूल्यांकन करते हैं, और उनके प्रतिरोध के आधार पर पुनर्मूल्यांकन करते हैं। नए वोल्टेज और धाराएँ, समीकरणों के पुनर्मूल्यांकन, आदि को एक संतुलन तक पहुँचने के प्रयास में जहाँ उनका प्रभावी प्रतिरोध वोल्टेज के लिए होना चाहिए और वर्तमान में ट्रांजिस्टर को देख रहा है।
फालस्टेड सिम्युलेटर मध्यम आकार के सर्किट के लिए शालीनता से तेज हो सकता है जो पूरी तरह से "रैखिक" तत्वों से मिलकर बनता है। समीकरणों की एक प्रणाली को बार-बार हल करने का समय बहुत ही उचित है यदि केवल एक चीज जो परिवर्तन सही पक्ष गुणांक है। यदि बाईं ओर परिवर्तन होता है (जैसे कि एक ट्रांजिस्टर का प्रभावी प्रतिरोध ऊपर या नीचे चला जाता है) तो समय बहुत धीमा हो जाता है क्योंकि सिस्टम को समीकरणों को "रिफैक्टर" करना पड़ता है। अनुकारक करने के लिए सिमुलेशन चरण के अनुसार कई बार समीकरण (ट्रांजिस्टर के साथ आवश्यक हो सकता है) चीजों को अभी तक धीमा कर देता है।
सब कुछ के लिए एक बड़े मैट्रिक्स का उपयोग करना बड़े सिमुलेशन के लिए एक अच्छा दृष्टिकोण नहीं है; भले ही मैट्रिक्स काफी विरल होगा, यह नोड्स और वोल्टेज स्रोतों की संख्या के वर्ग के लिए आनुपातिक स्थान लेगा। प्रत्येक सिमुलेशन चरण पर मैट्रिक्स को हल करने के लिए आवश्यक समय मैट्रिक्स के आकार के वर्ग के लिए आनुपातिक होगा यदि रिफैक्टरिंग की आवश्यकता नहीं है, या फिर मैट्रिक्स के आकार के घन के लिए। फिर भी, दृष्टिकोण में एक निश्चित लालित्य होता है जब यह सर्किट और रैखिक समीकरणों की प्रणाली के बीच संबंध दिखाने की बात आती है।