Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Berechnung PMV und PPD

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
vader_rider



Anmeldungsdatum: 12.08.2014
Beiträge: 5
Wohnort: Berlin

BeitragVerfasst am: 12.08.2014, 08:23    Titel: Berechnung PMV und PPD Antworten mit Zitat

Hallo,

ich bin neu hier und mit FreeBASIC nicht sehr vertraut. Habe aber folgendes Problem und bitte deshalb um Hilfe.

Ich muss auf Grundlage der DIN EN ISO 7730 ( http://www.hausbeschichtung.de/mediapool/139/1396250/data/DIN_EN_ISO_7730.pdf ) eine Berechnung mit einem Basic-Code durchführen. Leider mache ich immer etwas falsch denn FreeBASIC zeigt mir ganz viele Fehler an. Kann mir bitte jemand helfen? Es ist verdammt wichtig für mich das schnellstmöglich berechnen zu können. Vielen Dank!!!

Gruß vader_rider
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vader_rider



Anmeldungsdatum: 12.08.2014
Beiträge: 5
Wohnort: Berlin

BeitragVerfasst am: 12.08.2014, 08:25    Titel: Antworten mit Zitat

Der Basic-Code beginnt auf Seite 27 in der PDF
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 12.08.2014, 09:30    Titel: Antworten mit Zitat

Wenn man die Zeilennummern entfernt sollte sich der Code soweit ich sehe im qb kompatibilitätsmodus kompilieren lassen (#lang "qb" ) .
Im FreeBasic Modus (Standard) müssen alle verwendete Variablen vor der Verwendung deklariert werden (Dim variable As Datentyp).
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vader_rider



Anmeldungsdatum: 12.08.2014
Beiträge: 5
Wohnort: Berlin

BeitragVerfasst am: 12.08.2014, 10:09    Titel: Antworten mit Zitat

Vielen Dank für den Hinweis. Ich habe also jetzt auf qb umgestellt. Damit sieht der Code so aus:

#LANG "qb"
'Computer program (BASIC) for calculation of
'Predicted Mean Vote (PMV) and Predicted Percentage of Dissatisfied (PPD)
'in accordance with International Standard, ISO 7730
CLS: PRINT "DATA ENTRY" : 'data entry
INPUT " Clothing (clo )"; CLO
INPUT " Metabolic rate (met)"; MET
INPUT " External work, normally around 0 (met)"; WME
INPUT " Air temperature (°C)"; TA
INPUT " Mean radiant temperature (°C)"; TR
INPUT " Relative air velocity (m/s)"; VEL
PRINT " ENTER EITHER RH OR WATER VAPOUR PRESSURE BUT NOT BOTH"
INPUT " Relative humidity (% )"; RH
INPUT " Water vapour pressure (Pa)"; PA
DEF FNPS (T)=EXP(16.6536-4030.183/(T+235)) :'saturated vapour pressure, KPa
IF PA=0 THEN PA=RH*10*FNPS(TA) :'water vapour pressure, Pa
ICL = .155 * CLO :'thermal insulation of the clothing in M2K/W
M = MET * 58.15 :'metabolic rate in W/m2
W = WME * 58.15 :'external work in W/m2
MW = M - W :'internal heat production in the human body
IF ICL < .078 THEN FCL = 1 + 1.29 * ICL ELSE FCL=1.05 +0.645*ICL :'clothing area factor
HCF=12.1*SQR(VEL) :'heat transf. coeff. by forced convection
TAA = TA + 273 :'air temperature in Kelvin
TRA = TR + 273 :'mean radiant temperature in Kelvin
'------------CALCULATE SURFACE TEMPERATURE OF CLOTHING BY ITERATION------------
TCLA = TAA + (35.5-TA) / (3.5*(6.45*(ICL+.1)) :'first guess for surface temperature of clothing
P1 = ICL * FCL :'calculation term
P2 = P1 * 3.96 :'calculation term
P3 = P1 * 100 :'calculation term
P4 = P1 * TAA :'calculation term
P5 = 308.7 - .028 * MW + P2 * (TRA/100)^4 :'calculation term
XN = TCLA / 100
XF = XN
N=0
EPS = .00015 :'N: number of iterations
XF=(XF+XN) / 2 :'stop criteria in iteration
HCN=2.38*ABS(100*XF-TAA)^.25 :'heat transf. coeff. by natural convection
IF HCF>HCN THEN HC=HCF ELSE HC=HCN
XN=(P5+P4*HC-P2*XF^4) / (100+P3*HC)
N=N+1
IF N > 150 THEN GOTO 55
IF ABS (XN-XF)>EPS GOTO 35
TCL=100*XN-273 :'surface temperature of the clothing
'-----------------------------HEAT LOSS COMPONENTS-----------------------------
HL1 = 3.05*.001*(5733-6.99-MW-PA) :'heat loss diff. through skin
IF MW > 58.15 THEN HL2 = .42 * (MW-58.15) ELSE HL2 = 0! :'heat loss by sweating (comfort)
HL3 = 1.7 * .00001 * M * (5867-PA) :'latent respiration heat loss
HL4 = .0014 * M * (34-TA) :'dry respiration heat loss
HL5 = 3.96*FCL*(XN^4-(TRA/100)^4) :'heat loss by radiation
HL6 = FCL * HC * (TCL-TA) :'heat loss by convection
'-----------------------------CALCULATE PMV AND PPD----------------------------
TS = .303 * EXP(-.036*M) + .028 :'thermal sensation trans coeff
PMV = TS * (MW-HL1-HL2-HL3-HL4-HL5-HL6) :'predicted mean vote
PPD=100-95*EXP(-.03353*PMV^4-.2179*PMV^2) :'predicted percentage dissat.
GOTO 57
PMV =999999!
PPD=100
PRINT: PRINT"OUTPUT" :'output
PRINT " Predicted Mean Vote (PMV) :" ;: PRINT USING " # # . # "; PMV
PRINT " Predicted Percent of Dissatisfied (PPD) :" ;: PRINT USING " # # # . # "; PPD
PRINT: INPUT "NEXT RUN" (Y/N)"; RS
IF (RS="Y" OR RS="y") THEN RETURN
END
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vader_rider



Anmeldungsdatum: 12.08.2014
Beiträge: 5
Wohnort: Berlin

BeitragVerfasst am: 12.08.2014, 10:12    Titel: Antworten mit Zitat

Jetzt treten jedoch wieder Fehler auf mit denen ich leider auch nichts anfangen kann... kannst du dir oder jemand anderes das mal bitte anschauen und mir noch einmal so super helfen? Vielen Dank im Voraus!!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 12.08.2014, 10:39    Titel: Antworten mit Zitat

Folgendes kompiliert, ob auch alles richtig ist, kann ich nicht beurteilen und hab ich auch nicht überprüft (z.B. hab ich ein paar falsche Werte korrigiert, die aus dem PDF wohl unvollständig kopiert wurden).
Code:
#LANG "qb"
'Computer program (BASIC) for calculation of
'Predicted Mean Vote (PMV) and Predicted Percentage of Dissatisfied (PPD)
'in accordance with International Standard, ISO 7730

DataEntry:

CLS: PRINT "DATA ENTRY" : 'data entry
INPUT " Clothing (clo )"; CLO
INPUT " Metabolic rate (met)"; MET
INPUT " External work, normally around 0 (met)"; WME
INPUT " Air temperature (°C)"; TA
INPUT " Mean radiant temperature (°C)"; TR
INPUT " Relative air velocity (m/s)"; VEL
PRINT " ENTER EITHER RH OR WATER VAPOUR PRESSURE BUT NOT BOTH"
INPUT " Relative humidity (% )"; RH
INPUT " Water vapour pressure (Pa)"; PA
#define FNPS(T) (Exp(16.6536-4030.183/(T+235))) 'saturated vapour pressure, KPa
IF PA=0 THEN PA=RH*10*FNPS(TA) :'water vapour pressure, Pa
ICL = .155 * CLO :'thermal insulation of the clothing in M2K/W
M = MET * 58.15 :'metabolic rate in W/m2
W = WME * 58.15 :'external work in W/m2
MW = M - W :'internal heat production in the human body
IF ICL < .078 THEN FCL = 1 + 1.29 * ICL ELSE FCL=1.05 +0.645*ICL :'clothing area factor
HCF=12.1*SQR(VEL) :'heat transf. coeff. by forced convection
TAA = TA + 273 :'air temperature in Kelvin
TRA = TR + 273 :'mean radiant temperature in Kelvin
'------------CALCULATE SURFACE TEMPERATURE OF CLOTHING BY ITERATION------------
TCLA = TAA + (35.5-TA) / (3.5*(6.45*(ICL+.1))) :'first guess for surface temperature of clothing
P1 = ICL * FCL :'calculation term
P2 = P1 * 3.96 :'calculation term
P3 = P1 * 100 :'calculation term
P4 = P1 * TAA :'calculation term
P5 = 308.7 - .028 * MW + P2 * (TRA/100)^4 :'calculation term
XN = TCLA / 100
XF = XN
N=0
EPS = .00015 :'N: number of iterations

350:
XF=(XF+XN) / 2 :'stop criteria in iteration
HCN=2.38*ABS(100*XF-TAA)^.25 :'heat transf. coeff. by natural convection
IF HCF>HCN THEN HC=HCF ELSE HC=HCN
XN=(P5+P4*HC-P2*XF^4) / (100+P3*HC)
N=N+1
IF N > 150 THEN GOTO 550
IF ABS (XN-XF)>EPS Then GoTo 350
TCL=100*XN-273 :'surface temperature of the clothing
'-----------------------------HEAT LOSS COMPONENTS-----------------------------
HL1 = 3.05*.001*(5733-6.99-MW-PA) :'heat loss diff. through skin
IF MW > 58.15 THEN HL2 = .42 * (MW-58.15) ELSE HL2 = 0! :'heat loss by sweating (comfort)
HL3 = 1.7 * .00001 * M * (5867-PA) :'latent respiration heat loss
HL4 = .0014 * M * (34-TA) :'dry respiration heat loss
HL5 = 3.96*FCL*(XN^4-(TRA/100)^4) :'heat loss by radiation
HL6 = FCL * HC * (TCL-TA) :'heat loss by convection
'-----------------------------CALCULATE PMV AND PPD----------------------------
TS = .303 * EXP(-.036*M) + .028 :'thermal sensation trans coeff
PMV = TS * (MW-HL1-HL2-HL3-HL4-HL5-HL6) :'predicted mean vote
PPD=100-95*EXP(-.03353*PMV^4-.2179*PMV^2) :'predicted percentage dissat.
GOTO 570

550:
PMV =999999!
PPD=100

570:
PRINT: PRINT"OUTPUT" :'output
PRINT " Predicted Mean Vote (PMV) :" ;: PRINT USING " # # . # "; PMV
PRINT " Predicted Percent of Dissatisfied (PPD) :" ;: PRINT USING " # # # . # "; PPD
Dim RS As String
PRINT: INPUT "NEXT RUN (Y/N)"; RS
IF (RS="Y" OR RS="y") THEN GoTo DataEntry
End

Änderungen waren nötig, da FB den DEF FN Befehl nicht unterstützt. Weiters hab ich einzelne Zeilenmarkierungen wieder hinzugefügt, die für Sprungbefehle benötigt werden. Weiters musste ich die Variable RS am Ende explizit als String deklarieren, da ansonsten ein falscher Typ angenommen wurde.
Mit diesen notdürftigen Änderungen sollte das Programm laufen. Es ist halt im Stil der 80er geschrieben und komplett unleserlich ...
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
vader_rider



Anmeldungsdatum: 12.08.2014
Beiträge: 5
Wohnort: Berlin

BeitragVerfasst am: 12.08.2014, 15:26    Titel: Dankeschön Antworten mit Zitat

Wollte mich für die Super Hilfe bedanken!!! Es klappt jetzt wunderbar.
Ich finde es toll, dass es Personen gibt die man nicht kennt und wahrscheinlich nie kennenlernen wird und diese trotzdem so hilfsbereit sind und sich die Zeit nehmen um sich mit Problemen anderer auseinanderzusetzen.
Vielen Dank für deine Unterstützung!!!! lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz