• No results found

Be06. Public Shared v_win_rf As String = "38.6." Public Shared improvement As String = ".01"

N/A
N/A
Protected

Academic year: 2021

Share "Be06. Public Shared v_win_rf As String = "38.6." Public Shared improvement As String = ".01""

Copied!
10
0
0

Loading.... (view fulltext now)

Full text

(1)

Be06 Imports Microsoft.VisualBasic

Imports System.Xml Public Class Be06

Declare Function Be06Keys Lib "d:\Be06WebSite\Bin\Be10Eng.dll" Alias "Be06Keys" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String

'Declare Function Be06Keys Lib "d:\Be06WebSite\Bin\Be06Eng.dll" Alias "Be06Keys" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String

'Declare Function WebBe06Keys Lib

"d:\Inetpub\wwwroot\be06test\Bin\Be06Eng.dll" Alias "Be06Keys" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String

'Declare Function WebBe06Keys Lib

"d:\Inetpub\servers\be06_web_app\Bin\Be10Eng.dll" Alias "Be06Keys" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String

Declare Function WebBe06Keys Lib

"d:\Inetpub\servers\test_be06_web_app\Bin\Be10Eng.dll" Alias "Be06Keys" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String

Public Shared wall As String = "21." ' Ydervæg

Public Shared wall_x As String = "21x." ' Ydervæg ekstra Public Shared wall_y As String = "21y." ' Ydervæg ekstra nr 2 Public Shared floor As String = "23." ' Gulv i stue

Public Shared floor_x As String = "23x." ' Gulv i stue ekstra Public Shared roof As String = "27." ' Loft

Public Shared roof_x As String = "27x." ' Loft ekstra Public Shared wall_45 As String = "31." ' Skråvæg

Public Shared wall_sk As String = "32." ' Skunkvæg Public Shared floor_sk As String = "33." ' Skunkgulv Public Shared roof_re As String = "37." ' Tagrem

Public Shared n_win As String = "38.0." ' Vindue, nord Public Shared n_win_x As String = "38.0x." ' Vindue, nord ekstra Public Shared e_win As String = "38.1." ' Vindue, øst

Public Shared e_win_x As String = "38.1x." ' Vindue, øst ekstra Public Shared s_win As String = "38.2." ' Vindue, syd Public Shared s_win_x As String = "38.2x." ' Vindue, syd ekstra Public Shared w_win As String = "38.3." ' Vindue, vest Public Shared w_win_x As String = "38.3x." ' Vindue, vest ekstra Public Shared n_win_rf As String = "38.4." ' Ovenlysvindue, nord Public Shared s_win_rf As String = "38.5." ' Ovenlysvindue, syd Public Shared v_win_rf As String = "38.6." ' Ovenlysvindue, øst/vest Public Shared improvement As String = ".01" ' Forbedring

Public Shared model_id As String = "Be06WebSite"

Public Shared saving_txt As String = "Total besparelse i varmeforbrug " Public Shared imp_txt As String = ", Forbedret til " ' Forbedring i udskrift

Public Shared canceled As String = "Den eksisterende bygning er ændret, forbedringer er annuleret"

Public Shared Function GetBool(ByVal val As Boolean) As String If (val) Then Return ".T." Else Return ".F." End If End Function

Public Shared Function IsTrue(ByRef x As String) As Boolean If x.ToLower = ".t." Then

Return True Else

(2)

Be06 End If

End Function

Public Shared Function GetElement(ByRef XMLDoc As XmlDocument, ByVal section As String, ByVal id As String) As String

If Not XMLDoc Is Nothing Then Dim n0 As XmlNode

Dim Elements As XmlNodeList = XMLDoc.GetElementsByTagName(section) For Each n0 In Elements

Dim item As XmlElement = n0.Item(id) If Not item Is Nothing Then

Return item.InnerText End If Next End If Return "" End Function

Public Shared Function EditModel(ByRef XMLDoc As XmlDocument, ByVal section As String, ByVal id As String, ByVal value As String) As Boolean

Dim n0 As XmlNode

Dim Elements As XmlNodeList = XMLDoc.GetElementsByTagName(section) For Each n0 In Elements

Dim item As XmlElement = n0.Item(id) If Not item Is Nothing Then

item.InnerText = value Return True End If Next Return False End Function

Public Shared Function GetKeys(ByRef model As String, ByRef msg As String) As String

Dim maxkey As Integer = 2500 Dim max As Integer = maxkey Dim key0 As String = ""

Dim keys As String = key0.PadRight(maxkey) Dim keyxml As String = ""

Dim try_again As Boolean = False Try

keyxml = WebBe06Keys(model, keys, max, 0) msg = "ok" Catch ex As Exception try_again = True msg = "Error" End Try Try If (try_again) Then

keyxml = Be06Keys(model, keys, max, 0) msg = "ok" End If Catch ex As Exception msg = ex.Message End Try Return keyxml End Function

Public Shared Function ParceKeys(ByRef XMLDoc As XmlDocument, ByVal section As String, ByVal id As String) As String

Dim n0 As XmlNode

Dim Elem_n0 As XmlNodeList = XMLDoc.GetElementsByTagName("table") For Each n0 In Elem_n0

Dim id0 As String = n0.Attributes("head").InnerText If n0.HasChildNodes Then

If id0.StartsWith(section) Then

Dim n As Integer = n0.ChildNodes.Count - 1 For i = 0 To n

(3)

Be06

If n1.HasChildNodes Then

Dim name As String = n1.Item("id").InnerText If name.StartsWith(id) Then Return n1.Item("value").InnerText End If End If Next End If End If Next Return "" End Function

Public Shared Function GetHeatDem(ByRef keyxml As String, ByVal loss As Double, ByVal sup As Double, _

ByVal ht0 As Integer, ByVal kr As Double, ByRef el_price As Double, _

ByRef price As Double, ByRef el0 As Double) As Double Dim XMLDoc As New XmlDocument

XMLDoc.LoadXml(keyxml)

Dim ht As Double = ParceKeys(XMLDoc, "Bidrag", "Varme") Dim el As Double = ParceKeys(XMLDoc, "Bidrag", "El") Dim htn As Double = ParceKeys(XMLDoc, "Netto", "Rum") ht -= (0.1 * htn) If loss > 0.0 Then ht *= (90.0 / (100.0 - loss)) End If ht -= sup If ht < 0 Then ht = 0.0 End If If ht0 < 0 Then ' ht0: opvarmningsform price = 0.0 ElseIf ht0 < 4 Then

price = GetConsUnit(ht0, ht) * kr + el * el_price ' kr/m2 Else

price = GetConsUnit(ht0, ht) * kr + el * el_price ' kr/m2 End If

el0 = el

Return ht + el End Function

Public Shared Function GetDemand(ByRef xml As XmlDocument, ByVal kr As Double, _

ByRef el_price As Double, ByRef price As Double, ByRef el0 As Double) As Double

If (xml.HasChildNodes) Then Dim msg As String = ""

Dim keyxml As String = GetKeys(xml.OuterXml.Replace(",", "."), msg) ' parse doc as string

If Not keyxml = Nothing Then

Dim ht As Integer = GetElement(xml, "USAGE", "id") ' opvarmningsform

Dim dem0 As Double = GetHeatDem(keyxml, BoilerLoss(xml), ConsumpSup(xml), ht, kr, el_price, price, el0)

Return dem0 End If End If price = 0.0 Return 0.0 End Function

Public Shared Function GetSaving(ByRef xml As XmlDocument, _

ByVal cons0 As Double, ByVal el0 As Double, ByVal kr0 As Double, _ ByVal ucons As Double, ByVal kr As Double, _

ByVal el_price As Double, ByRef el2 As Double, _

ByRef kwh0 As Double, ByRef price0 As Double, ByRef std_cons As Double, ByVal pos As Boolean) As String

(4)

Be06 ' el0: el-behov, kWh/m2

' kr0: pris, kr/m2

' el_price: el-pris, kr/m2

' ucons: opgivet varmeforbrug, enhed afhængig af valgt opvarmning ' kr: opgivet energipris, enhed afhængig af valgt opvarmningsform ' kwh0: sidste forbrug, kwh/m2

' price0: sidste pris, kr/m2 Dim msg As String = ""

If (xml.HasChildNodes) Then

Dim keyxml As String = GetKeys(xml.OuterXml.Replace(",", "."), msg) ' parse doc as string

If Not keyxml = Nothing Then

Dim last_price0 As Double = price0

Dim ht As Integer = Be06.GetElement(xml, "USAGE", "id") ' opvarmningsform

Dim sup0 As Double = ConsumpSup(xml) ' supplement kWh

Dim dem0 As Double = GetHeatDem(keyxml, BoilerLoss(xml), sup0, ht, kr, el_price, price0, el2)

Dim saving As Double = cons0 - dem0 ' besparelse i forhold til udgangspunktet cons0, kwh/m2

Dim last_kwh0 = kwh0 - dem0 kwh0 = dem0

Dim frac As Double = 0.0

Dim area As Double = Be06.GetElement(xml, "BUILDING", "ae").Replace(".", ",") ' etageareal, m2

If kr > 0.0 Then

' brugeren har opgivet energipris

'Dim std_cons = GetConsUnit(ht, area * (cons0 - el0)) ' forbrug i valgte enhed

Dim std_cons0 = std_cons * area ' forbrug i valgte enhed Dim saving_kr As Double = (kr0 - price0) * area '

besparelse i kr

Dim reduction As Double = 1.0

If ucons > 0.0 Then ' brugeren har opgivet et varmeforbrug i valgte enhed

If ucons < std_cons0 Then ' opgivet forbrug < end beregnet => reduktion

reduction = ucons / std_cons0 End If

frac = reduction * saving_kr / (ucons * kr) ElseIf cons0 > 0 Then ' ingen reduktion frac = saving / cons0

End If

Dim kr2 As Double = reduction * saving_kr

Dim kr1 As String = Math.Round(kr2, 0) ' afrunding til 0 decimaler

Dim pctkr As String = Math.Round(100.0 * frac, 1) If kr2 < 0.0 And pos Then

Dim s2 As String = "er negativ, og sidste tiltag kan ikke anbefales"

Return s2 End If

Dim saving_last_kwh = reduction * last_kwh0 * area ' seneste besparelse i kWh

Dim saving_last As Double = reduction * (last_price0 - price0) * area ' seneste besparelse

'If pos Then

Dim save_kwh As String = Math.Round(saving_last_kwh, 0) Dim last As String = Math.Round(saving_last, 0)

'Dim s1 As String = kr1 + " kr pr år (ændring af energibehov " + pctkr + "%). Seneste tiltag " _

' + last + " kr pr år"

Dim kwh As String = Math.Round(reduction * saving * area, 0) Dim s1 As String = kwh + " kWh, " + kr1 + " kr. " _

+ "(Seneste tiltag " + save_kwh + " kWh, " + last + " kr pr år)"

Return s1 'End If

(5)

Be06 'Return s3

End If

' brugeren har ikke opgivet energipris If cons0 > 0.0 Then

frac = saving / cons0 End If

Dim saving_unit As Double = GetConsUnit(ht, area * saving) ' NBNBNB

Dim unit0 As String = Math.Round(saving_unit, 0) Dim pct0 As String = Math.Round(100.0 * frac, 1)

Dim s0 As String = unit0 + " " + Unit(ht) + " pr år (" + pct0 + "%)" Return s0 End If End If el0 = 0.0 Return msg End Function

Public Shared Function GetConsUnit(ByVal ht As Integer, ByVal kwh As Double) As Double Select Case ht Case 0 Return kwh / 1000.0 ' Fjernvarme, MWh Case 1 Return kwh / 40.6 ' Fjernvarme, m³ Case 2 Return kwh * 0.1 ' Naturgas, m³ Case 3

Return kwh * 0.1125 ' Fyringsolie, liter Case 5 Return kwh * 0.0036 ' Fjernvarme, GJ (1 kWh = 3.6 MJ) Case 4, 6 Return kwh ' El, kWh End Select End Function

Public Shared Function Unit(ByVal ht As Integer) As String Select Case ht

Case 0

Return "MWh" ' Fjernvarme, MWh Case 1, 2

Return "m³" ' Fjernvarme, m³ / Naturgas, m³ Case 3

Return "liter olie" ' Fyringsolie, liter Case 5 Return "GJ" ' Fjernvarme, GJ Case 4, 6 Return "kWh" ' El, kWh End Select Return "" End Function

Public Shared Sub ShowCons(ByVal ht As Integer, ByRef cons As String, ByRef eprice As String)

Dim msg As String = "Varmeforbrug pr år, " Dim kr As String = "Energipris, kr/"

Dim unit As String = "" Select Case ht

Case 0

unit = "MWh" ' Fjernvarme, MWh Case 1, 2

unit = "m³" ' Fjernvarme, m³ / Naturgas, m³ Case 3

unit = "liter olie" ' Fyringsolie, liter Case 5

unit = "GJ" ' Fjernvarme, GJ Case 4, 6

(6)

Be06 End Select

cons = msg + unit eprice = kr + unit End Sub

Public Shared Function GetHeatType(ByRef xml As XmlDocument) As Integer Dim heat As String = Be06.GetElement(xml, "BUILDING",

"basic_heat_supply")

heat = heat.ToUpper

If heat = ".SUP_DISTRICT." Then Return 1

ElseIf heat = ".SUP_BOILER." Then Return 0

Else

Return 2 End If

End Function

Public Shared Function FuelOil(ByRef xml As XmlDocument) As Boolean Dim fuel As String = Be06.GetElement(xml, "BOILER", "has_fuel") Return fuel.ToUpper = ".FU_OIL."

End Function

Public Shared Function BoilerLoss(ByRef xml As XmlDocument) As Double If Be06.GetHeatType(xml) = 0 And Be06.FuelOil(xml) Then

Dim id As String = Be06.GetElement(xml, "COOLING", "id") ' røggastab

If id.Length > 0 Then

Dim loss As Double = id.Replace(".", ",") Return loss

End If End If Return 0.0 End Function

Public Shared Function ConsumpSup(ByRef xml As XmlDocument) As Double Dim c0 As String = Be06.GetElement(xml, "DESCRIPT", "bbr")

If c0.Length > 0 Then

Dim cons As Double = CType(c0, Double)

Dim area As Double = GetElement(xml, "BUILDING", "ae").Replace(".", ",") ' etageareal, m2

If cons > 0.0 And area > 0.0 Then

Dim n As Integer = Be06.GetElement(xml, "DESCRIPT", "addr3") Dim fu As Integer = n >> 4

Dim ht As Integer = n - 16 * fu

Return cons * Std.SupFuelKwh(fu) * Std.SupHeatNy(ht) / area End If

End If Return 0.0 End Function

Public Shared Function GetHeatPump(ByRef xml As XmlDocument) As Integer ' type = 0: Ikke installeret, type = 1-3: Udeluft/Centralvarme, type = 4-6: Jordslange/Centralvarme

If IsTrue(Be06.GetElement(xml, "BUILDING", "heatpump")) Then

Dim Elements As XmlNodeList = xml.GetElementsByTagName("HEAT_PUMP") For Each n0 As XmlNode In Elements

Dim id As XmlElement = n0.Item("room_heating") Dim ht As String = id.InnerText

Dim vp_comp As XmlNodeList = xml.GetElementsByTagName("VP_COMP") For Each n1 As XmlNode In vp_comp

Dim a1 As XmlAttributeCollection = n1.Attributes() For Each m1 As XmlAttribute In a1

Dim rid = m1.Value If rid = ht Then

Dim eff As Double = n1.Item("nom_eff").InnerText Dim n As Integer = Std.vp_heat_table.Length / 7 For i As Integer = 0 To n - 1

(7)

Be06 0.001 Then Return i + 1 End If Next End If Next Next Next End If

Return 0 ' Ikke installeret End Function

Protected Shared Sub UpdateVpComp(ByRef n0 As XmlNode, ByRef table(,) As Double, ByRef i0 As Integer)

n0.Item("nom_eff").InnerText = table(i0, 0) n0.Item("nom_cop").InnerText = table(i0, 1) n0.Item("rel_cop50").InnerText = table(i0, 2) n0.Item("temp_cold").InnerText = table(i0, 3) n0.Item("temp_warm").InnerText = table(i0, 4) n0.Item("equip").InnerText = table(i0, 5) n0.Item("auto_stb").InnerText = table(i0, 6) End Sub

Public Shared Sub UpdateHeatPump(ByRef xml As XmlDocument, ByRef type As Integer)

' type = 0: Ikke installeret, type = 1-3: Udeluft/Centralvarme, type = 4-6: Jordslange/Centralvarme

Be06.EditModel(xml, "BUILDING", "heatpump", GetBool(type > 0)) If type > 0 Then

Dim name As String = Std.VpType(type)

Dim m0 As Integer = (Std.VpType.Length - 1) / 2

Dim Elements As XmlNodeList = xml.GetElementsByTagName("HEAT_PUMP") For Each n0 As XmlNode In Elements

' n0.Item("id").InnerText = name n0.Item("id").InnerText = type

Dim ht As String = n0.Item("room_heating").InnerText Dim dhw As String = n0.Item("dhw").InnerText

n0.Item("has_type").InnerText = ".VP_COMB."

Dim vp_comp As XmlNodeList = xml.GetElementsByTagName("VP_COMP") For Each n1 As XmlNode In vp_comp

Dim a1 As XmlAttributeCollection = n1.Attributes() For Each m1 As XmlAttribute In a1

Dim rid = m1.Value If rid = ht Then

Dim cold As XmlElement = n1.Item("has_type_cold") If type > m0 Then cold.InnerText = ".VP_J." Else cold.InnerText = ".VP_U." End If n1.Item("has_type_warm").InnerText = ".VP_V." UpdateVpComp(n1, Std.vp_heat_table, type - 1) ElseIf rid = dhw Then

Dim cold As XmlElement = n1.Item("has_type_cold") If type > m0 Then

cold.InnerText = ".VP_J." Else

cold.InnerText = ".VP_U." End If

UpdateVpComp(n1, Std.vp_dhw_table, type - 1) End If

Next Next Next

Be06.EditModel(xml, "DHW_TANK", "vol", Std.dhw_table(type - 1, 0)) Be06.EditModel(xml, "DHW_TANK", "heat_loss", Std.dhw_table(type - 1, 1))

Be06.EditModel(xml, "DHW_TANK", "has_el_heat", ".DHW_S.") Be06.EditModel(xml, "DHW_TANK", "solar_heat", ".T.")

(8)

Be06 Return

End If

Be06.EditModel(xml, "DHW_TANK", "vol", "60")

Be06.EditModel(xml, "DHW_TANK", "heat_loss", "0.9")

Be06.EditModel(xml, "DHW_TANK", "has_el_heat", ".DHW_N.") Be06.EditModel(xml, "DHW_TANK", "solar_heat", ".F.") End Sub

Public Shared Sub UpdateVent(ByRef XMLDoc As XmlDocument, ByVal i0 As Integer)

Dim n0 As XmlNode

Dim Elements As XmlNodeList = XMLDoc.GetElementsByTagName("VENTILATION") For Each n0 In Elements

n0.Item("id").InnerText = Std.ventType(i0) Dim part As XmlElement = n0.Item("part")

part.InnerText = Std.GetSel(i0, Std.GetImp(part.InnerText)) Dim qm As XmlElement = n0.Item("qvm")

qm.InnerText = Std.vent_table(i0, 0).ToString Dim nvgv As XmlElement = n0.Item("nvgv")

nvgv.InnerText = Std.vent_table(i0, 1).ToString Dim ti As XmlElement = n0.Item("tin")

ti.InnerText = Std.vent_table(i0, 2).ToString Dim elvf As XmlElement = n0.Item("el_vf")

elvf.InnerText = Be06.GetBool(Std.vent_table(i0, 3) > 0.0) Dim qn As XmlElement = n0.Item("qid")

qn.InnerText = Std.vent_table(i0, 4).ToString Dim qin As XmlElement = n0.Item("qis")

qin.InnerText = Std.vent_table(i0, 5).ToString Dim sel As XmlElement = n0.Item("sel")

sel.InnerText = Std.vent_table(i0, 6).ToString Dim qms As XmlElement = n0.Item("qvm_day") qms.InnerText = Std.vent_table(i0, 7).ToString Dim qns As XmlElement = n0.Item("qid_day") qns.InnerText = Std.vent_table(i0, 8).ToString Dim qmn As XmlElement = n0.Item("qvm_night") qmn.InnerText = Std.vent_table(i0, 9).ToString Dim qnn As XmlElement = n0.Item("qis_night") qnn.InnerText = Std.vent_table(i0, 10).ToString Return

Next End Sub

Public Shared Sub UpdateDistHt(ByRef XMLDoc As XmlDocument, ByVal idx As Integer)

Dim n0 As XmlNode

Dim Elements As XmlNodeList = XMLDoc.GetElementsByTagName("D_H_EXCH") For Each n0 In Elements

Dim id As XmlElement = n0.Item("id") id.InnerText = Std.DistHt(idx)

Dim loss As XmlElement = n0.Item("heat_loss") Dim stb As XmlElement = n0.Item("auto_stb") loss.InnerText = Std.dist_ht_table(idx, 0) stb.InnerText = Std.dist_ht_table(idx, 1) Return

Next End Sub

Public Shared Sub UpdateBoiler(ByRef XMLDoc As XmlDocument, ByRef table(,) As Double, _

ByVal idx As Integer, ByRef id0 As String) Dim n0 As XmlNode

Dim Elements As XmlNodeList = XMLDoc.GetElementsByTagName("BOILER") For Each n0 In Elements

If id0.Length > 0 Then

Dim id As XmlElement = n0.Item("id") id.InnerText = id0

End If

Dim eff As XmlElement = n0.Item("nom_eff") eff.InnerText = table(idx, 0).ToString

(9)

Be06

Dim fngn As XmlElement = n0.Item("full_ngn") fngn.InnerText = table(idx, 1).ToString

Dim fcor As XmlElement = n0.Item("full_fcor") fcor.InnerText = table(idx, 2).ToString

Dim pngn As XmlElement = n0.Item("part_ngn") pngn.InnerText = table(idx, 3).ToString

Dim pcor As XmlElement = n0.Item("part_fcor") pcor.InnerText = table(idx, 4).ToString

Dim frac As XmlElement = n0.Item("stb_frac") frac.InnerText = table(idx, 5).ToString Dim rgn As XmlElement = n0.Item("stb_rgn") rgn.InnerText = table(idx, 6).ToString Dim tgn As XmlElement = n0.Item("part_tgn") tgn.InnerText = table(idx, 7).ToString

If Not IsTrue(Be06.GetElement(XMLDoc, "BUILDING", "heatpump")) And _ Not IsTrue(Be06.GetElement(XMLDoc, "BUILDING", "solarpanel")) Then Be06.EditModel(XMLDoc, "DHW_TANK", "heat_loss", table(idx, 8).ToString)

Be06.EditModel(XMLDoc, "DHW_PIPE", "tube_psi", table(idx, 9).ToString)

End If Return Next

End Sub

Public Shared Function IsNum(ByRef s As String) As Boolean Dim ok As Boolean = True

Try Dim x As Double = s Catch ex As Exception ok = False End Try Return ok End Function

Public Shared Function IsInt(ByRef s As String) As Boolean Dim ok As Boolean = True

Try Dim x As Integer = s Catch ex As Exception ok = False End Try Return ok End Function

Public Shared Function GetNum(ByRef s As String) As Double Dim res As Double = 0.0

Try Dim x As Double = s res = x Catch ex As Exception res = 0.0 End Try Return res End Function

'Public Shared Function Pos(ByRef x As Double) As Double ' If x > 0.0 Then

' Return x ' End If

' Return 0.0 'End Function

Public Shared Function Pos(ByRef x As Double) As String If x > 0.001 Then

Return x.ToString End If

Return "0" End Function

(10)

Be06 End Class

References

Related documents

Commercial Financial Technical Execution Engineering &amp; Procurement Construction &amp; Startup Project Execution Planning Front-End Engineering Design Strategic Project

 Presence of cancer care infrastructure such as medical laboratory, ultrasound facilities, X-ray facilities, Radio- and chemo- therapy facilities, nuclear

As Halley demonstrates in “Rape at Rome: Feminist Interventions in the Criminalization of Sex-Related Violence in Positive International Criminal Law” (2008), feminists advanced

Climate change has the power to affect many ecological processes, but the most obvious changes ap- pear in the form of melting sea ice, sea level rise, changes in oceanic

Subsequently, the modelled BIM assets were integrated into a game engine environment, where they were coupled with interactive func- tionalities that allow the user to explore

With reference to the knowledge base, by relying on similar ap- proaches developed in the AEC field (and in particular on the Building Knowledge Modelling proposed by Carrara et al.

Zell: Artificial Intelligence (after Russel/Norvig, 3rd Ed.) 58 (b) The recursion unwinds and the best leaf value of the forgotten subtree (417) is backed up to Rimnicu Vilcea;

More specif- ically, this thesis contains the first applications of proof mining to the theory of partial differential equations and moreover to the theory of accretive, set-