Halli Hallo,
folgendes Problem habe ich:
Es geht um die Simulation der Erwärmung eines Raumes über eine Heizung.
Ich habe bereits ein 5x5x3 3D-Array erstellt. In einem bestimmten Feld herrscht eine konstante "Temperatur"(Heizung).
Über die Wärmeleitungsgleichung wird Schrittweise an jedes anliegende Feld ein gewisser Teil der Wärme ab- bzw. weitergegeben. Also beim ersten Schritt gibt das Feld mit der konstanten Temperatur an seine umliegenden Felder einen Teil ab. Im zweiten Schritt wiederholt sich das ganze, jedoch wird die Formel an die geänderten Felder aus dem vorherigen Schritt angewendet usw. Da liegt mein Problem.
Wie kann ich alle Felder des Arrays berechnen im ersten Schritt und dann im nächsten Schritt die aus dem vorherigen Schritt aktualisierten Felder auf die Formel anwenden?
Hier ein bisschen code zum Verständnis:
folgendes Problem habe ich:
Es geht um die Simulation der Erwärmung eines Raumes über eine Heizung.
Ich habe bereits ein 5x5x3 3D-Array erstellt. In einem bestimmten Feld herrscht eine konstante "Temperatur"(Heizung).
Über die Wärmeleitungsgleichung wird Schrittweise an jedes anliegende Feld ein gewisser Teil der Wärme ab- bzw. weitergegeben. Also beim ersten Schritt gibt das Feld mit der konstanten Temperatur an seine umliegenden Felder einen Teil ab. Im zweiten Schritt wiederholt sich das ganze, jedoch wird die Formel an die geänderten Felder aus dem vorherigen Schritt angewendet usw. Da liegt mein Problem.
Wie kann ich alle Felder des Arrays berechnen im ersten Schritt und dann im nächsten Schritt die aus dem vorherigen Schritt aktualisierten Felder auf die Formel anwenden?
Hier ein bisschen code zum Verständnis:
Code:
int x = 5, y = 5, z = 3;
double[][][] raumTemp = new double[x][y][z];
while(zeit<=5){
System.out.println("Temperatur Schritt " + zeit);
for(int posX = 0; posX < x; posX++) {
for(int posY = 0; posY < y; posY++) {
for(int posZ = 0; posZ < z; posZ++) {
raumTemp[0][3][0]=55;
if(posX==1 && posY==3 && posZ==1){
raumTemp[posX][posY][posZ] = raumTemp[posX][posY][posZ]- (temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-0-raumTemp[0][3][0]));
} else if(posX==1 && posY==3 && posZ==0){
raumTemp[posX][posY][posZ] = raumTemp[posX][posY][posZ]-(temperaturleitfähigkeit*(3*raumTemp[posX][posY][posZ]-0-raumTemp[0][3][0]));
}
System.out.print("(" + raumTempneu[posX][posY][posZ] + ")");
}
System.out.println(" ");
}
}
Zuletzt bearbeitet von einem Moderator: