Bearbeiten von „Simulationssystem“
Zur Navigation springen
Zur Suche springen
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.
Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version | Dein Text | ||
Zeile 24: | Zeile 24: | ||
Am berechneten Gesamtmodell wird dann die Durchschnittstemperatur als Aggregation aller Punkte ermittelt. | Am berechneten Gesamtmodell wird dann die Durchschnittstemperatur als Aggregation aller Punkte ermittelt. | ||
<pre> | <pre> | ||
# gegebenes Modell laden | # gegebenes Modell laden | ||
model.load( | model.load("Modell-01"); | ||
# Sicherstellen, dass jeder Punkt ein Attribut "Oberflächentyp" hat. Abbruch der Simulation, wenn nicht. | # Sicherstellen, dass jeder Punkt ein Attribut "Oberflächentyp" hat. Abbruch der Simulation, wenn nicht. | ||
model.hasAttribute( | model.hasAttribute("surfacetype"); | ||
# Jeder Punkt bekommt ein Attribut "Temperatur" mit Datentyp Festpunktzahl 16 Bit mit 2 Dezimalstellen) | # Jeder Punkt bekommt ein Attribut "Temperatur" mit Datentyp Festpunktzahl 16 Bit mit 2 Dezimalstellen) | ||
punkt.addAttribut( | punkt.addAttribut("temperature", fixpoint(16,2)); | ||
# Alle Punkte auf 20 Grad setzen: | # Alle Punkte auf 20 Grad setzen: | ||
modell.setAll("temperature", 20.00); | |||
# definieren einer Transaktion: die Funktion liefert abhängig vom Punktoberflächentyp eine Temperaturerhöhung: | |||
# | define Temp(type, temp): | ||
switch(type) | |||
case 'street': temp + 10; | |||
case 'wood': temp + 2; | |||
case 'house': temp + 8; | |||
# divideRectangle(): Aufteilung aller Punkte in 1000*1000 Punkte. | # divideRectangle(): Aufteilung aller Punkte in 1000*1000 Punkte. | ||
# toModel(): Jedes Subquadrat wird als Model behandelt (damit stehen alle Funktionen des Models zur Verfügung). | # toModel(): Jedes Subquadrat wird als Model behandelt (damit stehen alle Funktionen des Models zur Verfügung). | ||
# transaktion(): Für jeden Punkt des Submodells wird die Transaktion durchgeführt: Funktion | # transaktion(): Für jeden Punkt des Submodells wird die Transaktion durchgeführt: Funktion Temp mit Attributen "surfacetype" und Attribut "temperature" | ||
# neigbourLinearAdaption(): jeder Punkt im Model wird im Attribut "temperature" linear mit den Nachbarpunkten abgeglichen: die Temperatur | # neigbourLinearAdaption(): jeder Punkt im Model wird im Attribut "temperature" linear mit den Nachbarpunkten abgeglichen: die Temperatur | ||
# eines Punktes wird aus dem Durchschnitt aller Temperaturen der angrenzenden Punkte berechnet: | # eines Punktes wird aus dem Durchschnitt aller Temperaturen der angrenzenden Punkte berechnet: | ||
# Gewichtung des Punktes: 2, Gewichtung von (4) Kantennachbarn: 1/4=0.25, Gewichtung von (4) Eckpunkten: 1/8=0.125 | # Gewichtung des Punktes: 2, Gewichtung von (4) Kantennachbarn: 1/4=0.25, Gewichtung von (4) Eckpunkten: 1/8=0.125 | ||
# intoModel(): Überführung der Daten des Submodels in das Gesamt-Model. | # intoModel(): Überführung der Daten des Submodels in das Gesamt-Model. | ||
model.divideRectangle( | model.divideRectangle(1000, 1000) | ||
.toModel() | .toModel() | ||
.transaktion( | .transaktion(Temp, "surfacetype", "temperature") | ||
.neigbourLinearAdaption( | .neigbourLinearAdaption("temperature", 2, 0.25, 0.125) | ||
.intoModel(); | .intoModel().; | ||
# | # | ||
# Durchschnittstemperatur des Gesamtpunktnetzes ermitteln: | # Durchschnittstemperatur des Gesamtpunktnetzes ermitteln: | ||
model.aggregate( | model.aggregate("temperature", "Aufheizung der Luft bei Sonnenschein"); | ||
# Modell unter dem Namen "Modell-02" mit Kommentar speichern: | # Modell unter dem Namen "Modell-02" mit Kommentar speichern: | ||
model.store( | model.store("Modell-02", "Aufheizung der Luft"); | ||
</pre> | </pre> |