Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ przepływ ciepła metoda róznic skończonych

marcinek619 09 Lis 2013 19:47 1092 2
  • #1 09 Lis 2013 19:47
    marcinek619
    Poziom 2  

    Witam, mój kod przedstawia symulację rozpływu ciepła w kwadratowej płytce za pomocą M.R.S. Płytka na początku w każdym węźle ma temperature = 273 K, otoczenie płytki ma temperaturę 300K(wartość tą można zmieniać). Płytka została podzielona na 10x10 węzłów , Każdy węzeł jest elementem tablicy T[i][j][k], gdzie i- jest indeksem wiersza, j-kolumny, k-przedziału czasowego.Współczynniki przewodzenia ciepła, gęstości, i cp płytki są identyczne z otoczeniem.

    Po skompilowaniu programu, zauważyłem że wartość temperatury w węźle T[0][DimY][k + 1] jest taka sama jak T[1][0][k + 1] oraz symetrycznie i analogicznie T[DimX][0][k + 1] tak sama jak T[DimX-1][DimY][k+1].

    Doszukałem się miejsca w kodzie gdzie występuje niezgodność sprawdzając po kolei algorytm. Miejsce to zaznaczyłem komentarzem w kodzie i metodą sprawdzającą poprawność algorytmu. Siedzę już nad tym długi czas i w wyniku bezradności pisze tego posta na tym forum. Jak to możliwe, że przypisując TYLKO elementowi tablicy T[0][DimY][k + 1] wartość np. 999 ta wartość też jest przypisana elementowi tablicy T[1][0][k + 1]? Przesyłam kod źródłowy i proszę o pomoc.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 2
  • #2 10 Lis 2013 14:01
    D12
    Poziom 14  

    Nie znam algorytmu ale czasem nie powinieneś mieć zamiast samych ifów else if.

    0
  • #3 11 Lis 2013 20:24
    marcinek619
    Poziom 2  

    nie nie o to chodzi, już znalazłem błąd , rozmiary tablicy powinny być o 1 większe, i w algorytmie pokręciłem z odejmowaniem i dodawaniem 1. Temat można zamknąć.

    0