Oświadczenie: Jestem geofizykiem z ograniczonym wykształceniem elektrotechnicznym. Nie jestem pewien, czy ten problem jest niewiarygodnie łatwy, niewiarygodnie złożony czy całkowicie bezsensowny.
Mój cel: określenie rezystywności masowej próbki skały za pomocą sieci rezystorów.
Próbkę skały należy modelować przy użyciu sieci rezystorów z niektórymi rezystorami o wysokiej rezystancji (reprezentujących skałę stałą) i innymi rezystorami o niskiej rezystancji (reprezentującymi ścieżki płynów w skale).
Załóżmy, że mam sieć rezystorów na jednolitej siatce, jak pokazano poniżej. W pokazanym przykładzie każdy segment linii ma powiązany rezystor oznaczony od 1 do 24 na siatce 3 na 3. Rezystancje każdego segmentu linii są znane.
Całkowita długość siatki wynosi a „obszar” to A (w tym przypadku jest to przykład 2-D, więc obszar jest również tylko długością). Rezystywność masowa próbki jest następnie podawana przez:
Moje pytanie: Jak mogę określić skuteczną odporność, sieci?
Szukałem w Internecie, ale wszystko, co mogę znaleźć, to dyskusje na temat nieskończonych sieci, prądów źródłowych i opadających itp. Nie jestem zainteresowany prądem ani napięciem.
Czy ten problem można rozwiązać w obecnej postaci?
Odpowiedzi:
W zależności od używanego języka komputerowego możesz, ale nie musi, używać ujemnych wskaźników. Nie ma znaczenia To tylko kwestia zapamiętania tego, z czym masz do czynienia.
(Istnieją inne techniki ze względu na wydajność. Ale prawdopodobnie nie warto się nimi przejmować.)
Powyższe równanie jest niczym innym jak obliczeniem napięcia węzła centralnego mającego cztery połączone z nim rezystory, gdzie znane są napięcia na pozostałych końcach czterech oporników. Napięcie węzła centralnego jest następnie obliczane na podstawie powyższego równania. Ponieważ dzielnik jest taki sam dla każdego terminu, możesz po prostu obliczyć sumę liczników, a następnie podzielić raz przez mianownik.
Jesteś gotowy na następny cykl. Wykonuj te cykle tyle razy, ile uważasz, że jest to konieczne, aby ogólny stan się uspokoił (i tak się stanie).
Patrzę na kod, który napisałem, z wieloma komentarzami, tylko 67 wierszy. Więc NIE jest trudno pisać.
Tak, to jest to samo.
Istnieje połączenie. Myślę, że nazywa się to implementacją „bez matrycy”.
Oto przykład. Następujący zestaw wartości rezystorów został umieszczony w LTSpice do symulacji:
Uruchomiłem następujący program VB.NET:
Powyższy program pokazuje sposób ustawiania rezystorów, pionowego i poziomego, a także macierzy napięcia, dzięki czemu upraszcza niektóre testy nieistniejących węzłów i / lub wartości rezystorów. W ten sposób kod jest nieco bardziej przejrzysty, choć wymaga jeszcze kilku elementów tablicy. (Po prostu sprawiłem, że dodatkowe wartości rezystorów mają nieskończoną wartość.) Po prostu porównaj, jak skonfigurowałem tablice, ze schematem, a także, i myślę, że będziesz w stanie wypracować dokładne szczegóły tutaj.
Oczywiście włamałem się również do rezystorów i wartości węzłów, nie czyniąc z tego programu ogólnego przeznaczenia do odczytywania tabeli wartości. Ale tę ogólność można dość łatwo dodać. I ten kod powinien uczynić wszystko, co napisałem, absolutnie jednoznaczne.
(Dobra. Jeszcze jedna uwaga końcowa. Byłoby to znacznie lepiej ukierunkowane na F # lub dowolny porządny kompilator ukierunkowany na masowo równoległy system obliczeniowy. Każde obliczenie w „czerwonym” lub „czarnym” można wykonać równolegle, całkowicie niezależnie od siebie. F # sprawia, że jest to trywialne. Więc zakodowane w F #, możesz uruchomić to na wszystkich dostępnych rdzeniach bez żadnych specjalnych czynności. To po prostu działa. Tylko uwaga na wypadek, gdybyś zbierał dużo danych w jakiś sposób i chciałbyś wziąć pełna korzyść systemu wielordzeniowego.)
UWAGA KOŃCOWA:
Wyprowadzenie jest dość proste z KCL. Umieść cztery rezystory w następującym układzie:
symulacja tego obwodu - Schemat utworzony przy użyciu CircuitLab
Zastosuj KCL:
Niektórzy bawiąc się algebrą uzyskują wynik, którego użyłem w kodzie.
źródło
Z pewnością można zastosować podejście oparte na sieci rezystorów 2D w celu modelowania problemu 2D, ale może to być nieco skomplikowane przy przejściu do 3 wymiarów. Możesz rozważyć zastosowanie bardziej tradycyjnego (obecnie) podejścia z przewodami objętościowymi zdefiniowanymi w twoich domenach z przypisanym do nich odpowiednim przewodnictwem. Darmowy kod FEMM ( http://www.femm.info/wiki/HomePage ) jest bardzo wydajny i może być używany do 2D, symetrii osiowej i 3D. Stamtąd możesz rozważyć przejście na znacznie bardziej wydajne kody, takie jak SCIrun ( https://www.sci.utah.edu/), który jest kodem akademickim dla problemów przewodnictwa objętościowego o znacznej złożoności. Używam go rutynowo do oczek ponad miliona czworościanów. Mimo że został opracowany przede wszystkim do modelowania biologicznego, powinien świetnie sprawdzać się w tym, co robisz. Przykłady problemów naprzód w zestawie narzędzi do przodu / do tyłu powinny Cię zabrać. Mogą być również przydatne odwrotne problemy przydatne w tomografii impedancyjnej. Ogólnie używam wersji 4, ponieważ wersja 5 jest wciąż w toku. Oprogramowanie ma również interfejs do tetgen, który jest doskonałym kodem budującym siatki.
Wreszcie, jeśli nie jesteś przeciwny wydawaniu pieniędzy, zawsze jest COMSOL, który jest bardzo łatwy w użyciu (i dość drogi).
źródło