einstein-developers Mailing List for EINSTEIN (Page 2)
Brought to you by:
energyxperts
You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(60) |
Nov
(1) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
|
Feb
|
Mar
|
Apr
(5) |
May
(2) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Slawitsch, B. <Bet...@jo...> - 2008-10-26 19:35:22
|
ok, thanks, clear and working! bettina ________________________________ Von: claudia vannoni [mailto:cla...@gm...] Gesendet: Sonntag, 26. Oktober 2008 19:47 An: Slawitsch, Bettina Cc: EINSTEIN-developers; Hans Schweiger Betreff: Re: CAR MANUFACTURING 2008/10/26 Slawitsch, Bettina <Bet...@jo...> Dear Claudia, thanks a lot for the car washing example and all your input!! CC works ;), perfect! We are still checking and preparing for tomorrow, some intermediate result... HX network - no costs: The problem is, that we go twice over the PE2 calculation! Once for designing the HX, and then we run a second time (Hans, did you foresee this, or did we introduce this by mistake?) over the PE2 calc for calculating the energy flows - this is calulated (as defined with Hans) with taking into account the existing HEX. This means that we generated another inputHR.xml that includes the newly built HX as existing HX. For existing HX we do not calculate costs, so therefore the final outcome in the panel do not include costs. so, the problem is in the sequence of calculations...Hans can we change this? Where? in the moduleHR.py? or does it affect any other calculation? Dear all, some more comments: With which factors is PET calculated on the basis of FET? for gas, oil, etc? Heat demand proc: car industry: why is UPH higher then UPHproc when no HX is inserted? What is the main statement that we want to give with the "energy intensity" graphs? Is it used in the benchmark model or just for visulation of the values? on which basis is specific energy consumption per product calculated (SEC)? Should there be a differenc between the values stated in Q1/ product data/energy consumption per product and the SEC shown in the EnergyIntensityPanel? For car washing example: Q1: 0,15 mWh/product - reasonable, EnergyIntensityPanel: 0,03 kWh/product ? CHP is simulating something when opening the panel - This is not the autopilot - just the energy flows right? How about the system performance data - is the module checking something already? The database just offers one CHP equipment - is this a real equipment or just a dummy for the meanwhile? Boiler module: Car washing - after adding a HX, a solar system is designed, a very small heat pump (because no waste heat available), remaining power needed = 1200 kW, peak. The boiler module suggests 6000 kW boiler? we assume new boiler module is under construction. NO. Enrico sent the last version already to stoyan at 14.00 oClock around. AGAIN, please have a look on the DB...600 kW steam boiler available at 400°C !!! and another 6000 kW. obnly 2 BOILERS over 207°C! since the supply temp is 210°C no so much chioces from the DB! Benchmark/ Global energy intensity - is the panel working?? best regards to all, bettina & chris ________________________________ Von: claudia vannoni [mailto:cla...@gm...] Gesendet: Sonntag, 26. Oktober 2008 13:45 An: Slawitsch, Bettina Cc: EINSTEIN-developers; Hans Schweiger Betreff: CAR MANUFACTURING Hello, Concerning car example, especially drying,.... due to: · Inexact modelisation in Einstein (in paint drying,e.g boundary of the process and supply; e.g. heat recovery duplicated-> It has been considered both internal heat recovery and external heat recovery for the same energy flow. E.g.the temperature of the process should be 200°C not 440°C. Heat supplied at this temp but needed at 200 in the chamber, right?...). Some minor doubts on the background calculations (e.g maintainace power -> 96 kW? between 440-335...about 240 kw with the lower mass flow.) · Complexity of possible modelling according Einstein like it is now (we found out at least 2 possibilities but not applicable in a basic course where people should learn how to use the tool and not to analyse complex situations.) ...We went for a simpler drying process at least in a way to have one heat exchanger. We also changed some other parameters in air conditioning (too high demand compared to the processes) and in electricity (too high PEC demand with respect to PET); added bigger surface etc. for solar thermal; added a too big steam boiler for further optimisation; ...economics and so on in order to have the possibilities to optimise/add something, otherwise the alternatives where too poor. BUT: the resulting savings are still not so remarkable in terms of PEC. It would have required much more time to change all the processes. Benchamrking misses benchmarks in the DB. Important result from this test: In our opinion, the main limitation of Einstein now is the time required for modelling the system: many assumptions and deep knowledge of the background required. Improvements are required there. Still some problems in HeX: I deleted the internal heat recovery from the process model (drying) since PE2 doesn't recognise the internal heat recovery and designs a new HeX with the same power. It should definitely be avoided/checked with more time. Costs for alternative Heat Recovery are 0. No time to investigate. For your info on the mcp criteria. Again in this case, HeX does not take into consideration the offgas. so the resulting recovery is limited. (note:BB now re-calc the necessary parameters for new units but Hans did not included yet the results into questionnaire. Within today) Boilers and ST (intermediate already on SourceF) work much more better. In BB- design assistant for this case - the target minimum efficiency is not reached simply because the temp is above 207°C (see DB) and we have only 2 boilers working at 400°C. If statistics show some 0 by equipment in normal since it depends on the energy performance algorithm that follows the order of the equipment in the cascade and/BUT does not read the minimum required supplying temp. Hope it helps and sorry for the delay!!!...and to go into details so late. We couldn't do better ... Please feel free to change/adapt our proposal for the Graz training if you are not happy with this. With 1000 kW and/or with existing HeX (select the source/sink then click again on the name of the Hex and/or exit the screen..it should run) you pass the cchek. sunny sunday cla&co. -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 - 00184 Rome Tel.: +39 0644585271 - 234 e-mail: cla...@gm... cla...@un... ****************************************************** -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 - 00184 Rome Tel.: +39 0644585271 - 234 e-mail: cla...@gm... cla...@un... ****************************************************** |
From: claudia v. <cla...@gm...> - 2008-10-26 18:47:12
|
2008/10/26 Slawitsch, Bettina <Bet...@jo...> > Dear Claudia, > > thanks a lot for the car washing example and all your input!! CC works ;), > perfect! > We are still checking and preparing for tomorrow, some intermediate > result... > > HX network - no costs: The problem is, that we go twice over the PE2 > calculation! Once for designing the HX, and then we run a second time (Hans, > did you foresee this, or did we introduce this by mistake?) over the PE2 > calc for calculating the energy flows - this is calulated (as defined with > Hans) with taking into account the existing HEX. This means that we > generated another inputHR.xml that includes the newly built HX as existing > HX. For existing HX we do not calculate costs, so therefore the final > outcome in the panel do not include costs. > so, the problem is in the sequence of calculations...Hans can we change > this? Where? in the moduleHR.py? or does it affect any other calculation? > > *Dear all,* > > some more comments: > > With which factors is PET calculated on the basis of FET? for gas, oil, > etc? > > Heat demand proc: car industry: why is UPH higher then UPHproc when no HX > is inserted? > > What is the main statement that we want to give with the "energy intensity" > graphs? Is it used in the benchmark model or just for visulation of the > values? > on which basis is specific energy consumption per product calculated (SEC)? > Should there be a differenc between the values stated in Q1/ product data/ > energy consumption per product and the SEC shown in the > EnergyIntensityPanel? > For car washing example: Q1: 0,15 mWh/product - reasonable, > EnergyIntensityPanel: 0,03 kWh/product ? > > CHP is simulating something when opening the panel - This is not the > autopilot - just the energy flows right? > How about the system performance data - is the module checking something > already? > The database just offers one CHP equipment - is this a real equipment or > just a dummy for the meanwhile? > > Boiler module: Car washing - after adding a HX, a solar system is designed, > a very small heat pump (because no waste heat available), remaining power > needed = 1200 kW, peak. > The boiler module suggests 6000 kW boiler? we assume new boiler module is > under construction. NO. Enrico sent the last version already to stoyan at > 14.00 oClock around. AGAIN, please have a look on the DB...600 kW steam > boiler available at 400°C !!! and another 6000 kW. obnly 2 BOILERS over > 207°C! since the supply temp is 210°C no so much chioces from the DB! > > Benchmark/ Global energy intensity - is the panel working?? > > best regards to all, > > bettina & chris > > ------------------------------ > *Von:* claudia vannoni [mailto:cla...@gm...] > *Gesendet:* Sonntag, 26. Oktober 2008 13:45 > *An:* Slawitsch, Bettina > *Cc:* EINSTEIN-developers; Hans Schweiger > *Betreff:* CAR MANUFACTURING > > Hello, > > Concerning car example, especially drying,…. due to: > > > · Inexact modelisation in Einstein (in paint drying,e.g boundary of > the process and supply; e.g. heat recovery duplicated-> It has > been considered both internal heat recovery and external heat recovery for > the same energy flow. E.g.the temperature of the process should be 200°C not > 440°C. Heat supplied at this temp but needed at 200 in the chamber, > right?...). Some minor doubts on the background calculations (e.g > maintainace power -> 96 kW? between 440-335...about 240 kw with the lower > mass flow.) > > · Complexity of possible modelling according Einstein like it is > now (we found out at least 2 possibilities but not applicable in a basic > course where people should learn how to use the tool and not to analyse > complex situations.) > > > > …We went for a simpler drying process at least in a way to have one heat > exchanger. We also changed some other parameters in air conditioning (too > high demand compared to the processes) and in electricity (too high PEC > demand with respect to PET); added bigger surface etc. for solar thermal; > added a too big steam boiler for further optimisation; …economics and so > on in order to have the possibilities to optimise/add something, otherwise > the alternatives where too poor. BUT: the resulting savings are still not so > remarkable in terms of PEC. It would have required much more time to change > all the processes. Benchamrking misses benchmarks in the DB. > > > > Important result from this test: > > In our opinion, the main limitation of Einstein now is the time required > for modelling the system: many assumptions and deep knowledge of the > background required. Improvements are required there. > > > > Still some problems in HeX: > > I deleted the internal heat recovery from the process model (drying) since > PE2 doesn't recognise the internal heat recovery and designs a new HeX with > the same power. It should definitely be avoided/checked with more time. > > Costs for alternative Heat Recovery are 0. No time to investigate. > > For your info on the mcp criteria. Again in this case, HeX does not take > into consideration the offgas. so the resulting recovery is limited. > (note:BB now re-calc the necessary parameters for new units but Hans did not > included yet the results into questionnaire. Within today) > > > > Boilers and ST (intermediate already on SourceF) work much more better. In > BB- design assistant for this case - the target minimum efficiency is not > reached simply because the temp is above 207°C (see DB) and we have only 2 > boilers working at 400°C. If statistics show some 0 by equipment in normal > since it depends on the energy performance algorithm that follows the order > of the equipment in the cascade and/BUT does not read the minimum required > supplying temp. > > > Hope it helps and sorry for the delay!!!…and to go into details so late. We > couldn't do better … Please feel free to change/adapt our proposal for the > Graz training if you are not happy with this. With 1000 kW and/or with > existing HeX (select the source/sink then click again on the name of the Hex > and/or exit the screen..it should run) you pass the cchek. > > sunny sunday > cla&co. > > > -- > ******************************************************* > University of Rome Sapienza > Department of Mechanics and Aeronautics, via Eudossiana 18 – 00184 Rome > Tel.: +39 0644585271 – 234 > e-mail: cla...@gm... > cla...@un... > > ****************************************************** > -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 – 00184 Rome Tel.: +39 0644585271 – 234 e-mail: cla...@gm... cla...@un... ****************************************************** |
From: Hans S. <han...@en...> - 2008-10-26 18:41:05
|
no more change, too late ... I'll just trying that those things that work work without bugs ... it's too dangerous to make changes in moduleHR in last minute hurry - now it's impossible for me to see how this might affect in other parts ... sorry, Hans Slawitsch, Bettina wrote: > Dear Claudia, > thanks a lot for the car washing example and all your input!! CC works > ;), perfect! > We are still checking and preparing for tomorrow, some intermediate > result... > HX network - no costs: The problem is, that we go twice over the PE2 > calculation! Once for designing the HX, and then we run a second time > (Hans, did you foresee this, or did we introduce this by mistake?) > over the PE2 calc for calculating the energy flows - this is calulated > (as defined with Hans) with taking into account the existing HEX. This > means that we generated another inputHR.xml that includes the newly > built HX as existing HX. For existing HX we do not calculate costs, so > therefore the final outcome in the panel do not include costs. > so, the problem is in the sequence of calculations...Hans can we > change this? Where? in the moduleHR.py? or does it affect any other > calculation? > *Dear all,* > some more comments: > With which factors is PET calculated on the basis of FET? for gas, > oil, etc? > > Heat demand proc: car industry: why is UPH higher then UPHproc when no > HX is inserted? > > What is the main statement that we want to give with the "energy > intensity" graphs? Is it used in the benchmark model or just for > visulation of the values? > on which basis is specific energy consumption per product calculated > (SEC)? Should there be a differenc between the values stated in Q1/ > product data/energy consumption per product and the SEC shown in the > EnergyIntensityPanel? > For car washing example: Q1: 0,15 mWh/product - reasonable, > EnergyIntensityPanel: 0,03 kWh/product ? > CHP is simulating something when opening the panel - This is not the > autopilot - just the energy flows right? > How about the system performance data - is the module checking > something already? > The database just offers one CHP equipment - is this a real equipment > or just a dummy for the meanwhile? > Boiler module: Car washing - after adding a HX, a solar system is > designed, a very small heat pump (because no waste heat available), > remaining power needed = 1200 kW, peak. > The boiler module suggests 6000 kW boiler? we assume new boiler module > is under construction. > Benchmark/ Global energy intensity - is the panel working?? > best regards to all, > bettina & chris > > ------------------------------------------------------------------------ > *Von:* claudia vannoni [mailto:cla...@gm...] > *Gesendet:* Sonntag, 26. Oktober 2008 13:45 > *An:* Slawitsch, Bettina > *Cc:* EINSTEIN-developers; Hans Schweiger > *Betreff:* CAR MANUFACTURING > > Hello, > > Concerning car example, especially drying,…. due to: > > · Inexact modelisation in Einstein (in paint drying,e.g boundary of > the process and supply; e.g. heat recovery duplicated-> It has been > considered both internal heat recovery and external heat recovery for > the same energy flow. E.g.the temperature of the process should be > 200°C not 440°C. Heat supplied at this temp but needed at 200 in the > chamber, right?...). Some minor doubts on the background calculations > (e.g maintainace power -> 96 kW? between 440-335...about 240 kw with > the lower mass flow.) > > · Complexity of possible modelling according Einstein like it is now > (we found out at least 2 possibilities but not applicable in a basic > course where people should learn how to use the tool and not to > analyse complex situations.) > > …We went for a simpler drying process at least in a way to have one > heat exchanger. We also changed some other parameters in air > conditioning (too high demand compared to the processes) and in > electricity (too high PEC demand with respect to PET); added bigger > surface etc. for solar thermal; added a too big steam boiler for > further optimisation; …economics and so on in order to have the > possibilities to optimise/add something, otherwise the alternatives > where too poor. BUT: the resulting savings are still not so remarkable > in terms of PEC. It would have required much more time to change all > the processes. Benchamrking misses benchmarks in the DB. > > Important result from this test: > > In our opinion, the main limitation of Einstein now is the time > required for modelling the system: many assumptions and deep knowledge > of the background required. Improvements are required there. > > Still some problems in HeX: > > I deleted the internal heat recovery from the process model (drying) > since PE2 doesn't recognise the internal heat recovery and designs a > new HeX with the same power. It should definitely be avoided/checked > with more time. > > Costs for alternative Heat Recovery are 0. No time to investigate. > > For your info on the mcp criteria. Again in this case, HeX does not > take into consideration the offgas. so the resulting recovery is > limited. (note:BB now re-calc the necessary parameters for new units > but Hans did not included yet the results into questionnaire. Within > today) > > Boilers and ST (intermediate already on SourceF) work much more > better. In BB- design assistant for this case - the target minimum > efficiency is not reached simply because the temp is above 207°C (see > DB) and we have only 2 boilers working at 400°C. If statistics show > some 0 by equipment in normal since it depends on the energy > performance algorithm that follows the order of the equipment in the > cascade and/BUT does not read the minimum required supplying temp. > > Hope it helps and sorry for the delay!!!…and to go into details so > late. We couldn't do better … Please feel free to change/adapt our > proposal for the Graz training if you are not happy with this. With > 1000 kW and/or with existing HeX (select the source/sink then click > again on the name of the Hex and/or exit the screen..it should run) > you pass the cchek. > sunny sunday > cla&co. > > > -- > ******************************************************* > University of Rome Sapienza > Department of Mechanics and Aeronautics, via Eudossiana 18 – 00184 Rome > Tel.: +39 0644585271 – 234 > e-mail: cla...@gm... <mailto:cla...@gm...> > cla...@un... <mailto:cla...@un...> > > ****************************************************** -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Slawitsch, B. <Bet...@jo...> - 2008-10-26 18:28:53
|
Dear Claudia, thanks a lot for the car washing example and all your input!! CC works ;), perfect! We are still checking and preparing for tomorrow, some intermediate result... HX network - no costs: The problem is, that we go twice over the PE2 calculation! Once for designing the HX, and then we run a second time (Hans, did you foresee this, or did we introduce this by mistake?) over the PE2 calc for calculating the energy flows - this is calulated (as defined with Hans) with taking into account the existing HEX. This means that we generated another inputHR.xml that includes the newly built HX as existing HX. For existing HX we do not calculate costs, so therefore the final outcome in the panel do not include costs. so, the problem is in the sequence of calculations...Hans can we change this? Where? in the moduleHR.py? or does it affect any other calculation? Dear all, some more comments: With which factors is PET calculated on the basis of FET? for gas, oil, etc? Heat demand proc: car industry: why is UPH higher then UPHproc when no HX is inserted? What is the main statement that we want to give with the "energy intensity" graphs? Is it used in the benchmark model or just for visulation of the values? on which basis is specific energy consumption per product calculated (SEC)? Should there be a differenc between the values stated in Q1/ product data/energy consumption per product and the SEC shown in the EnergyIntensityPanel? For car washing example: Q1: 0,15 mWh/product - reasonable, EnergyIntensityPanel: 0,03 kWh/product ? CHP is simulating something when opening the panel - This is not the autopilot - just the energy flows right? How about the system performance data - is the module checking something already? The database just offers one CHP equipment - is this a real equipment or just a dummy for the meanwhile? Boiler module: Car washing - after adding a HX, a solar system is designed, a very small heat pump (because no waste heat available), remaining power needed = 1200 kW, peak. The boiler module suggests 6000 kW boiler? we assume new boiler module is under construction. Benchmark/ Global energy intensity - is the panel working?? best regards to all, bettina & chris ________________________________ Von: claudia vannoni [mailto:cla...@gm...] Gesendet: Sonntag, 26. Oktober 2008 13:45 An: Slawitsch, Bettina Cc: EINSTEIN-developers; Hans Schweiger Betreff: CAR MANUFACTURING Hello, Concerning car example, especially drying,.... due to: · Inexact modelisation in Einstein (in paint drying,e.g boundary of the process and supply; e.g. heat recovery duplicated-> It has been considered both internal heat recovery and external heat recovery for the same energy flow. E.g.the temperature of the process should be 200°C not 440°C. Heat supplied at this temp but needed at 200 in the chamber, right?...). Some minor doubts on the background calculations (e.g maintainace power -> 96 kW? between 440-335...about 240 kw with the lower mass flow.) · Complexity of possible modelling according Einstein like it is now (we found out at least 2 possibilities but not applicable in a basic course where people should learn how to use the tool and not to analyse complex situations.) ...We went for a simpler drying process at least in a way to have one heat exchanger. We also changed some other parameters in air conditioning (too high demand compared to the processes) and in electricity (too high PEC demand with respect to PET); added bigger surface etc. for solar thermal; added a too big steam boiler for further optimisation; ...economics and so on in order to have the possibilities to optimise/add something, otherwise the alternatives where too poor. BUT: the resulting savings are still not so remarkable in terms of PEC. It would have required much more time to change all the processes. Benchamrking misses benchmarks in the DB. Important result from this test: In our opinion, the main limitation of Einstein now is the time required for modelling the system: many assumptions and deep knowledge of the background required. Improvements are required there. Still some problems in HeX: I deleted the internal heat recovery from the process model (drying) since PE2 doesn't recognise the internal heat recovery and designs a new HeX with the same power. It should definitely be avoided/checked with more time. Costs for alternative Heat Recovery are 0. No time to investigate. For your info on the mcp criteria. Again in this case, HeX does not take into consideration the offgas. so the resulting recovery is limited. (note:BB now re-calc the necessary parameters for new units but Hans did not included yet the results into questionnaire. Within today) Boilers and ST (intermediate already on SourceF) work much more better. In BB- design assistant for this case - the target minimum efficiency is not reached simply because the temp is above 207°C (see DB) and we have only 2 boilers working at 400°C. If statistics show some 0 by equipment in normal since it depends on the energy performance algorithm that follows the order of the equipment in the cascade and/BUT does not read the minimum required supplying temp. Hope it helps and sorry for the delay!!!...and to go into details so late. We couldn't do better ... Please feel free to change/adapt our proposal for the Graz training if you are not happy with this. With 1000 kW and/or with existing HeX (select the source/sink then click again on the name of the Hex and/or exit the screen..it should run) you pass the cchek. sunny sunday cla&co. -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 - 00184 Rome Tel.: +39 0644585271 - 234 e-mail: cla...@gm... cla...@un... ****************************************************** |
From: claudia v. <cla...@gm...> - 2008-10-26 15:52:19
|
# -*- coding: cp1252 -*- #==============================================================================# # E I N S T E I N # # Expert System for an Intelligent Supply of Thermal Energy in Industry # (www.iee-einstein.org) # #------------------------------------------------------------------------------ # # ModuleST (Solar thermal systems) # #------------------------------------------------------------------------------ # # Module for calculation of solar thermal systems # #============================================================================== # # # EINSTEIN Version No.: 1.0 # Created by: Claudia Vannoni, Enrico Facci, Hans Schweiger # 25/06/2008 - 12/10/2008 # # Update No. 001 # # Since Version 1.0 revised by: # Hans Schweiger 24/10/2008 # # Changes to previous version: # # 24/10/2008: HS General adaptation to changes in GUI functionality # Most important functions changed: # - addEquipmentDummy # - setEquipmentFromDB # - setSolarSystemPars # Change in calculation of TavCollector in cEF # #------------------------------------------------------------------------------ # (C) copyleft energyXperts.BCN (E4-Experts SL), Barcelona, Spain 2008 # www.energyxperts.net / in...@en... # # This program is free software: you can redistribute it or modify it under # the terms of the GNU general public license as published by the Free # Software Foundation (www.gnu.org). # #============================================================================== from sys import * from math import * from numpy import * import copy from einstein.auxiliary.auxiliary import * from einstein.GUI.status import * from einstein.modules.interfaces import * import einstein.modules.matPanel as mP from einstein.modules.constants import * from sunday import * from einstein.modules.messageLogger import * from einstein.GUI.dialogGauge import DialogGauge PARASITIC_ELECTRICITY = 0.01 DEFAULT_SYSTEM_EFFICIENCY = 0.90 # default value for solar system efficiency MIN_SYSTEM_EFFICIENCY = 0.50 # minimum allowed value for solar system efficiency sunOnH = Intensity() sunOnT = Intensity() sunAnglesOnSurface = Angles() dirSunOnT = [0.0,0.0,0.0] #------------------------------------------------------------------------------ def getDailyRadiation(I,day): #------------------------------------------------------------------------------ # Calculates some (more or less) "reasonable" distribution of yearly solar # radiation # very very basic and only reasonable for European latitudes !!! #------------------------------------------------------------------------------ # ***GETTING_STARTED***: # The SUNDAY functions are written radically in SI-units, this is J, W, s; no # hours, no kilos, no Megas ... !!!! => unit conversion from EINSTEIN-units # to Sunday (SI-) units is necessary kWh_to_J = 3.6e+6 Hmean = I/365*kWh_to_J H = Hmean * (1.0 - 0.5*cos(2.0*math.pi*(day+10)/365)) # print "moduleST;getDailyRadiation: the daily radiation is ",H return H #------------------------------------------------------------------------------ def collectorEfficiency(GT,dT,STc0,STc1,STc2): #------------------------------------------------------------------------------ # Calculates the collector efficiency at a given working point # GT: Solar radiation on tilted surface (SI - units: W/m2) # c1/c2 are in W/m2K, W/m2K2 !!! #------------------------------------------------------------------------------ # ***GETTING_STARTED***: # Later on the incidence angle modifier and decomposition into direct # and diffuse radiation could be added # The necessary input values GbT, GdT and cos(theta) are already available # from the function SUN_HOURLY if GT <= 0: return 0.0 else: # STc0 = 0.80 # Collector parameters from the DB: As default STARTING value choose always:LowTempCollType=FPEinstein # STc1 = 3.50 # STc2 = 0.010 return STc0 - (STc1 + STc2*dT)*dT/(GT) #============================================================================== #------------------------------------------------------------------------------ def collectorEfficiencyBiaxial(GbT,GdT,tanThetaL,tanThetaT,dT,STc0,STc1,STc2,K50L,K50T): #------------------------------------------------------------------------------ # Calculates the collector efficiency at a given working point # GT: Solar radiation on tilted surface (SI - units: W/m2) # c1/c2 are in W/m2K, W/m2K2 !!! #------------------------------------------------------------------------------ if (GbT+GdT) <= 0: return 0.0 else: bT = max(- log(K50T)/pow(tan(50.0*pi/180.0),2),0) bL = max(- log(K50L)/pow(tan(50.0*pi/180.0),2),0) KT = exp(-bT*pow(tanThetaT,2)) #transversal IAM KL = exp(-bL*pow(tanThetaL,2)) #longitudinal IAM c0_b = STc0*KT*KL c0_d = STc0*K50T*K50L # 50º IAM supposed for diffuse radiation c0 = (c0_b*GbT + c0_d*GdT)/(GbT+GdT) #weighted average between beam and diffuse return c0 - (STc1 + STc2*dT)*dT/(GbT + GdT) #============================================================================== #============================================================================== class SolarCostFunction(): #------------------------------------------------------------------------------ def __init__(self,c30,c300,c3000,unitPrice300,OM): #------------------------------------------------------------------------------ self.calculateCostCoefs(c30,c300,c3000) self.costRatio = float(unitPrice300) / c300 self.OM = float(OM) #------------------------------------------------------------------------------ def calculate(self,Pnom): #------------------------------------------------------------------------------ C_turnKey = Pnom*(self.FixCost + self.AddCost * exp(-Pnom/self.Pref)) C_col = C_turnKey * self.costRatio C_OM = Pnom*self.OM return (C_turnKey,C_col,C_OM) #------------------------------------------------------------------------------ def calculateCostCoefs(self,c30,c300,c3000): #------------------------------------------------------------------------------ # calculates iteratively the coefficients of the cost function # C = C0 + C1*exp(-Pnom/Pref) #------------------------------------------------------------------------------ #.............................................................................. # Previous checks if curve is reasonable: if c30 < c300 or c300 < c3000: logTrack("ModuleST: cost figures not reasonable") return (c300,0,300.0) if c3000/c300 < c300/c30: logTrack("ModuleST: warning, unrealistic case, not in consistence with correlation") c300 = pow(c30*c3000,0.5) #.............................................................................. # Initial estimate: C0 = 0.9*c3000 #.............................................................................. # xi = exp(-300/PRef) # RSMALL = (C30 - C0)/(C300 - C0) = (xi**1/10/xi) = xi**-0.9) # RLARGE = (C3000 - C0)/(C300 - C0) = (xi**9) # -> xi_S = rsmall**(-1/0.9) # -> xi_L = rlarge**(1/9.0) alpha = 0.5 for i in range(1000): if (c300 > C0): rsmall = (c30 - C0)/(c300 - C0) xi = pow(rsmall,1.0/(0.1-1.0)) else: xi = 1.0 C1 = (c30 - c300)/(pow(xi,0.1) - xi) C0p = c3000 - C1*pow(xi,10.0) C0p = min(C0p,c3000) diff = (C0p - C0)/C0 C0 += alpha *(C0p-C0) # print "C0: %s C1: %s xi: %s diff: %s "%(C0,C1,xi,diff) if diff < 1.e-6: break Pref = -300.0/log(xi) # print "C0: %s C1: %s Pref: %s "%(C0,C1,Pref) # print "C30 = %s"%(C0+C1*exp(-30.0/Pref)) # print "C300 = %s"%(C0+C1*exp(-300.0/Pref)) # print "C3000 = %s"%(C0+C1*exp(-3000.0/Pref)) self.FixCost = C0 self.AddCost = C1 self.Pref = Pref return (C0,C1,Pref) #============================================================================== class ModuleST(object): #============================================================================== #============================================================================== #============================================================================== STList = [] #------------------------------------------------------------------------------ def __init__(self, keys = ["ST Table"]): #------------------------------------------------------------------------------ # init is called only once at the very beginning of the EINSTEIN session # at this moment no project data are available yet ... #------------------------------------------------------------------------------ self.keys = keys # the key to the data is sent by the panel self.atmosfericFlag = 0 self.surfaceFlag = 0 self.avAreaFactor=1.1 #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def initPanel(self): #------------------------------------------------------------------------------ # initPanel is called when the user opens the DA panel # all the calculations should be carried out here that are necessary only # the first time. the rest should be done in "updatePanel" #------------------------------------------------------------------------------ self.manualChoosenColl = None self.selectedCollID = None self.avAreaFactor=1.1 self.generalData() self.screenSurfaces() self.calcSurfArea() (self.inclination,self.azimuth,self.shLoss)=self.defineCalcParams() self.guiSysPars = [0,0,0] self.TavCollMean = 0 if Status.int.cascadeUpdateLevel < 0: Status.int.initCascadeArrays(0) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def updatePanel(self): #------------------------------------------------------------------------------ # Here all the information should be prepared so that it can be plotted on the panel # This function will be called from the GUI every time some information to # be displayed might have changed #------------------------------------------------------------------------------ (STList,collectorList) = self.screenEquipments() if Status.int.cascadeUpdateLevel < self.cascadeIndex: Status.mod.moduleEnergy.runSimulation(last=self.cascadeIndex) #............................................................................................ # 1. List of equipments if len(collectorList) == 0 and self.selectedCollID is not None: data = array([]) if self.selectedCollID is not None: models = Status.DB.dbsolarthermal.DBSolarThermal_ID[self.selectedCollID] if len(models) > 0: model = models[0] data = array(noneFilter([[model.STModel, model.STType, model.STc0, model.STc1, model.STc2, model.K50L, model.K50T]])) else: data = array(collectorList) Status.int.setGraphicsData('ST Table',data) #............................................................................................ # 2. Preparing data # Status.int.setGraphicsData('ST Plot',[[1,2,3,4],[2,4,6,8],[3,5,9,7],[4,3,2,3],[5,5,10,5]]) Tmax = 200.0 iTmax = int(Tmax/Status.TemperatureInterval + 0.5) index=self.findIndex() # print "ModuleST: index =",index,"cascadeIndex=",self.cascadeIndex QD_plot = [] USH_plot = [] if len(STList)>0: for i in range(iTmax): QD_plot.append(Status.int.QD_T_mod[index][i]/1000.0) USH_plot.append(Status.int.USHj_T[index][i]/1000.0) Status.int.setGraphicsData('ST Plot',[Status.int.T[0:iTmax], QD_plot, USH_plot]) else: for i in range(iTmax): QD_plot.append(Status.int.QD_T_mod[index][i]/1000.0) Status.int.setGraphicsData('ST Plot',[Status.int.T[0:iTmax], QD_plot]) #............................................................................................ # 3. Configuration design assistant config = noneFilter(self.getUserDefinedPars()) Status.int.setGraphicsData('ST Config',config) #............................................................................................ # 4. additional information if len(STList)>0: yi= Status.int.USHj_T[index][iTmax]/(STList[0][0]) sf=Status.int.USHj_T[index][iTmax]*100/Status.int.QD_T_mod[index][iTmax] # print "ModuleST; updatePanel: the heat supplyed in a year by the solar system is:",Status.int.USHj_T[index][iTmax] if collectorList[0][7] != None: ####E.F. 28/07 try: maxCapacity=(self.grossSurfArea/collectorList[0][7])*0.7 ####E.F. 28/07 except: ####E.F. 28/07 maxCapacity=(self.grossSurfArea/1.1)*0.7 ####E.F. 28/07 else: ####E.F. 28/07 maxCapacity=(self.grossSurfArea/1.1)*0.7 ####E.F. 28/07 try: ####E.F. 28/07 SEff = Status.int.USHj_T[index][iTmax]*100/(collectorList[0][8]*STList[0][0]/0.7) ####E.F. 28/07 except: SEff= "--" ####E.F. 28/07 # print "ModuleST; updatePanel: collectorList[0][8] is:",collectorList[0][8] else: yi=0 sf=0 maxCapacity=(self.grossSurfArea/1.1)*0.7 SEff= "--" if self.TavCollMean == 0: TC = "--" else: if len(STList) > 0: TC =self.TavCollMean else: TC = "--" info= [self.usableSurfacesArea,maxCapacity,sf,yi,SEff,TC,0] if self.NSurfaces == 0: info[0] = "---" info[1] = "---" Status.int.setGraphicsData('ST Info',info) #............................................................................................ # 5. System parameters to GUI if len(STList) > 0: sysPars = noneFilter(STList[0]) else: sysPars = self.guiSysPars Status.int.setGraphicsData('ST SysPars',sysPars) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def getUserDefinedPars(self): #------------------------------------------------------------------------------ # gets the user defined data from UHeatPump and stores it to interfaces to be shown in HP panel #------------------------------------------------------------------------------ urows = Status.DB.uheatpump.Questionnaire_id[Status.PId].AlternativeProposalNo[Status.ANo] if len(urows) == 0: logTrack('ModuleST (getUserDefinedPars): PId %s ANo %s not defined'%(Status.PId,Status.ANo)) dummy = {"Questionnaire_id":Status.PId,"AlternativeProposalNo":Status.ANo} Status.DB.uheatpump.insert(dummy) config = [50,STTYPES[0],400.0] Status.int.setGraphicsData('ST Config',config) self.setUserDefinedPars() else: u = urows[0] if u.STSolFra is None: u.STSolFra = 0.5 if u.STCollType is None: u.STCollType = "any" if u.STMinYield is None: u.STMinYield = 300.0 Status.SQL.commit() config = noneFilter([u.STSolFra, #H.S. 01/08 u.STCollType, #H.S. 01/08 u.STMinYield]) #H.S. 01/08 config[0] *= 100.0 #conversion to % #H.S. 01/08 return config #------------------------------------------------------------------------------ def setUserDefinedPars(self): #------------------------------------------------------------------------------ config = Status.int.GData['ST Config'] urows = Status.DB.uheatpump.Questionnaire_id[Status.PId].AlternativeProposalNo[Status.ANo] #row in UHeatPump if len(urows)==0: logTrack("ModuleST(setUserDefinedParamHP): corrupt data base - no entry for uheatpump under current ANo") dummy = {"Questionnaire_id":Status.PId,"AlternativeProposalNo":Status.ANo} Status.DB.uheatpump.insert(dummy) urows = Status.DB.uheatpump.Questionnaire_id[Status.PId].AlternativeProposalNo[Status.ANo] #row in UHeatPump u = urows[0] try: u.STSolFra = float(config[0])/100.0 except: u.STSolFra = 0.5 u.STCollType = config[1] u.STMinYield = config[2] Status.SQL.commit() #------------------------------------------------------------------------------ def screenEquipments(self): #------------------------------------------------------------------------------ # screens existing equipment, whether there are already heat pumps #------------------------------------------------------------------------------ equipments = Status.prj.getEquipments(cascade=True) self.NEquipe=len(equipments) STList=[] collectorList=[] self.equipeIDs=[] self.cascadeIndex = 0 for equipe in equipments: # print "Equipment: ",equipe.EquipType,getEquipmentClass(equipe.EquipType) if getEquipmentClass(equipe.EquipType) == "ST": collectorTable = [equipe.Model, equipe.EquipType, equipe.ST_C0, equipe.ST_C1, equipe.ST_C2, equipe.ST_K50L, equipe.ST_K50T, equipe.STAreaFactor, ##E.F. 28/07 equipe.HTilted] ##E.F. 28/07 systemTable = [equipe.HCGPnom, equipe.ST_SysEff, equipe.ST_Volume] self.equipeIDs.append(equipe.QGenerationHC_ID) if equipe.EquipIDFromDB is not None: self.selectedCollID = equipe.EquipIDFromDB # none-check avoids overwriting by addEquipmentDummy !! STList.append(systemTable) collectorList.append(collectorTable) self.cascadeIndex = equipe.CascadeIndex if len(STList)>1: logMessage(_("pay attenction more than one solar system")) return (STList,collectorList) #------------------------------------------------------------------------------ def getEqId(self,rowNo): #------------------------------------------------------------------------------ # gets the EqId from the rowNo in the STList #------------------------------------------------------------------------------ STId = self.equipeIDs[rowNo] return STId #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def deleteEquipment(self,rowNo,automatic=False): #------------------------------------------------------------------------------ # deletes the selected boiler in the current alternative #------------------------------------------------------------------------------ if automatic == False: if rowNo == None: #indicates to delete last added equipment dummy if self.dummyEqId is None: return else: STid = self.dummyEqId else: STid = self.getEqId(rowNo) logTrack("Module ST (delete): id to be deleted = %s"%STid) else: STid= rowNo logTrack("Module ST (delete automaticly): id to be deleted = %s"%STid) Status.prj.deleteEquipment(STid) self.screenEquipments() self.guiSysPars = [0,0,0] self.updatePanel() self.avAreaFactor=1.1 self.manualChoosenColl = None ####E.F. 28/07 self.selectedCollID = None #------------------------------------------------------------------------------ def addEquipmentDummy(self): #------------------------------------------------------------------------------ # adds a new dummy equipment to the equipment list and returns the # position in the cascade #------------------------------------------------------------------------------ (STList,collectorList) = self.screenEquipments() if len(STList)> 0: self.dummyEqId = None equipments = Status.DB.qgenerationhc.\ Questionnaire_id[Status.PId].\ AlternativeProposalNo[Status.ANo].\ CascadeIndex[self.cascadeIndex] if len(equipments)>0: self.equipe=equipments[0] showWarning(_("You are changing the current solar system.")) return self.equipe else: logDebug("ModuleST (addEquipmentDummy): fatal error in STList!!!!!") self.equipe = Status.prj.addEquipmentDummy() self.dummyEqId = self.equipe.QGenerationHC_ID if self.equipe.CascadeIndex > 1: Status.mod.moduleHC.cascadeMoveToTop(self.equipe.CascadeIndex) self.equipe = Status.prj.getEquipe(self.dummyEqId) #after having moved, the equipe - table has to be updated !!! self.cascadeIndex = self.equipe.CascadeIndex NewEquipmentName = "Solar thermal system" equipeData = {"Equipment":NewEquipmentName,\ "EquipType":"solar thermal (flat-plate)"} # by default assign any valid equipe type. # should be updated in setEquipmentFromDB self.equipe.update(equipeData) Status.SQL.commit() Status.SQL.commit() self.screenEquipments() return(self.equipe) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def setEquipmentFromDB(self,equipe,modelID): #------------------------------------------------------------------------------ # takes an equipment from the data base and stores it under a given Id in # the equipment data base #------------------------------------------------------------------------------ models = Status.DB.dbsolarthermal.DBSolarThermal_ID[modelID] if len(models) > 0: model = models[0] self.selectedCollID = modelID else: logTrack("ModuleST: selected model ID %s not in database"%modelID) return if model.STManufacturer != None: equipe.update({"Manufact":model.STManufacturer}) if model.STModel != None: equipe.update({"Model":model.STModel}) logTrack("ModuleST: setting equipment type from %s"%model.STType) equipe.update({"EquipType":getEquipmentType("ST",model.STType)}) equipe.update({"NumEquipUnits":1}) if model.DBSolarThermal_ID != None: equipe.update({"EquipIDFromDB":model.DBSolarThermal_ID}) if model.STType != None: equipe.update({"EquipTypeFromDB":str(model.STType)}) if model.STc0 != None: equipe.update({"ST_C0":model.STc0}) if model.STc1 != None: equipe.update({"ST_C1":model.STc1}) if model.STc2 != None: equipe.update({"ST_C2":model.STc2}) if model.K50L != None: equipe.update({"ST_K50L":model.K50L}) else: logTrack("No longitudinal incidence angle modifier defined for collector ID %s. 1.1 assumed"%modelID) equipe.update({"ST_K50L":0.95}) if model.K50T != None: equipe.update({"ST_K50T":model.K50T}) else: logTrack("No transversal incidence angle modifier defined for collector ID %s. 1.1 assumed"%modelID) equipe.update({"ST_K50T":0.95}) if model.STAreaFactor != None: equipe.update({"STAreaFactor":model.STAreaFactor}) else: logTrack("No surface area factor defined for collector ID %s. 1.1 assumed"%modelID) equipe.update({"STAreaFactor":1.1}) ### E.F. 28/07 if model.STOMUnitFix is not None: equipe.update({"OandMfix":model.STOMUnitFix}) else: logDebug("ModuleST: fix costs for O and M of the solar sistem %s not specified"%equipe.Model) equipe.update({"OandMfix":0.0}) equipe.update({"OandMvar":0.0}) Status.SQL.commit() #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def setSolarSystemPars(self): #------------------------------------------------------------------------------ sysPars = Status.int.GData['ST SysPars'] (STList,collectorList) = self.screenEquipments() createNewSSY = False if len (STList) > 0: changeInEq = False equipments = Status.DB.qgenerationhc.\ Questionnaire_id[Status.PId].\ AlternativeProposalNo[Status.ANo].\ CascadeIndex[self.cascadeIndex] if len(equipments) > 0: equipe = equipments[0] if equipe.HCGPnom is not None: if fabs(float(sysPars[0]) - equipe.HCGPnom) > 1.e-6: changeInEq = True else: changeInEq = True equipe.HCGPnom = float(sysPars[0]) if equipe.ST_SysEff is not None: if fabs(float(sysPars[1]) - equipe.ST_SysEff) > 1.e-6: changeInEq = True else: changeInEq = True equipe.ST_SysEff = float(sysPars[1]) if equipe.ST_SysEff is None or not (MIN_SYSTEM_EFFICIENCY <= equipe.ST_SysEff <= 1.0): logWarning(_("Invalid specification of system efficiency (value should be from 0.5 - 1.0). eta = %s assumed")%0.9) equipe.ST_SysEff = DEFAULT_SYSTEM_EFFICIENCY if equipe.ST_Volume is not None: if fabs(float(sysPars[2]) - equipe.ST_Volume) > 1.e-6: changeInEq = True else: changeInEq = True equipe.ST_Volume = float(sysPars[2]) Status.SQL.commit() else: logDebug("ModuleST (setSolarSystemPars): STList > 0 but equipment not found") if changeInEq == True: Status.int.changeInCascade(self.cascadeIndex) self.calculateCostParameters(equipe,self.selectedCollID) # elif self.selectedCollID is not None: # createNewSSY = True # print "ModuleST (setSolarSystemPars): mode 2 selectedCollID = ",self.selectedCollID # equipe = self.addEquipmentDummy() # self.setEquipmentFromDB(equipe,self.selectedCollID) # self.setSolarSystemPars() else: try: self.guiSysPars[0] = float(sysPars[0]) except: self.guiSysPars[0] = None pass try: self.guiSysPars[1] = float(sysPars[1]) except: self.guiSysPars[1] = None try: self.guiSysPars[2] = float(sysPars[2]) except: self.guiSysPars[2] = None if self.guiSysPars[0] > 0: createNewSSY = True if self.NSurfaces <= 0: logWarning(_("No information on available surfaces is given !\n")+\ _("Is is assumed that there is no constraint due to limited space")) if createNewSSY and self.selectedCollID is None: showMessage(_("Please select a solar collector")) return createNewSSY #------------------------------------------------------------------------------ def setManualSelection(self,theId): ##### E.F. 28/07 # self.manualChoosenColl = theId self.manualChoosenColl = Status.DB.dbsolarthermal.DBSolarThermal_ID[theId][0] self.selectedCollID = theId #------------------------------------------------------------------------------ def calculateEnergyFlows(self,equipe,cascadeIndex): #------------------------------------------------------------------------------ # calculates the energy flows in the equipment identified by "cascadeIndex" #------------------------------------------------------------------------------ logTrack("ModuleST (calculateEnergyFlows): starting (cascade no: %s)"%cascadeIndex) if Status.int.cascadeUpdateLevel < (cascadeIndex - 1): logDebug("ModuleBB (calculateEnergyFlows): cannot calulate without previously updating the previous levels") Status.mod.moduleEnergy.runSimulation(last=(cascadeIndex-1)) Status.int.extendCascadeArrays(cascadeIndex) #.............................................................................. # get equipment data from equipment list in SQL self.screenEquipments() STModel = equipe.Model STType = equipe.EquipType PNom = equipe.HCGPnom if PNom is None or PNom == 0: #security feature logDebug("ModuleST (calcEn.Flows): equipe with PNom = None or PNom = 0 detected\nCan't do anything with this !!!") return COPh_nom = equipe.HCGTEfficiency #XXX TOpMax or something similar should be defined in SQL TMax = equipe.TOpMax Tmax=200 #.............................................................................. # get demand data for CascadeIndex/EquipmentNo from Interfaces # and create arrays for storing heat flow in equipment QD_Tt = copy.deepcopy(Status.int.QD_Tt_mod[cascadeIndex-1]) QA_Tt = copy.deepcopy(Status.int.QA_Tt_mod[cascadeIndex-1]) QD = Status.int.calcQ_T(QD_Tt) # print "Demand seen by solar system: " # print QD # print "Global demand (QD_T) " # print Status.int.QD_T # print "Global demand cascade index 1(QD_T_mod[0]) " # print Status.int.QD_T_mod[0] USHj_Tt = Status.int.createQ_Tt() USHj_T = Status.int.createQ_T() QHXj_Tt = Status.int.createQ_Tt() QHXj_T = Status.int.createQ_T() #.............................................................................. #.............................................................................. #.............................................................................. # Start hourly loop dlg = DialogGauge(Status.main,_("EINSTEIN system simulation"),_("simulating %s")%(_("solar system"))) # update surface calculations if necessary if self.atmosfericFlag != 1: self.generalData() if self.surfaceFlag != 1: self.screenSurfaces() self.calcSurfArea() (self.inclination,self.azimuth,self.shLoss)=self.defineCalcParams() I = self.ST_IDefault # Solar system parameters SurfAreaSol = PNom/0.7 if equipe.ST_SysEff != None and MIN_SYSTEM_EFFICIENCY <= equipe.ST_SysEff <= 1.0: systemEfficiency = equipe.ST_SysEff else: logDebug(_("ModuleST (cEF): invalid specification of system efficiency (should be from 0.5 - 1.0). eta = %s assumed")%0.9) systemEfficiency = DEFAULT_SYSTEM_EFFICIENCY # Solar collector parameters ST_C0=equipe.ST_C0 ST_C1=equipe.ST_C1 ST_C2=equipe.ST_C2 if equipe.ST_K50T > 0 and equipe.ST_K50T is not None: ST_K50T = equipe.ST_K50T else: logTrack("ModuleST (cEF): invalid specification of KT. KT = 0.95 assumed") ST_K50T = 0.95 if equipe.ST_K50L > 0 and equipe.ST_K50L is not None: ST_K50L = equipe.ST_K50L else: logTrack("ModuleST (cEF): invalid specification of KT. KT = 0.95 assumed") ST_K50L = 0.95 # Parameters for storage modelling TStorage = 60.0 #initial temperature of the storage at 1st of January 0:00 #HS2008-08-02. initial temperature changed to 60 ºC TStorageMax = 250.0 #maximum allowed temperature in the storage if equipe.ST_Volume is not None: if equipe.ST_Volume < 0.01* equipe.HCGPnom: storageVolume = 0.01* equipe.HCGPnom logWarning(_("The heat storage volume is very small. For internal calculation it has been set to 0.01 m3/kW")) else: storageVolume = equipe.ST_Volume else: logTrack("ModuleST (cEF): no storage Volume specified. Specific storage size of 0.05 m3/m2 assumed") storageVolume = 0.05*SurfAreaSol #in m3. for the moment fixed to 50 l/m2. can be an equipment parameter equipe.ST_Volume = storageVolume Status.SQL.commit() CStorage = 1.16*storageVolume #heat capacity of the storage in kW/K QStorage = CStorage*TStorage #total heat stored in the tank (reference temperature = 0ºC) QStorageMax = CStorage*TStorageMax #maximum amount of heat that can be stored in the tank (ref. = 0ºC) #............................................................................. #............................................................................. #............................................................................. #............................................................................. #............................................................................. #............................................................................. # HERE THE CYCLE OF CALCULATE ENERGY FLOWS STARTS #............................................................................. #............................................................................. #............................................................................. #............................................................................. #............................................................................. TIMESTEP = Status.TimeStep NT = Status.NT # setting counters and initial value of integrals (sums) to zero oldDay = 0 QavColl = 0 #these two values only for calculating the weighted mean of the average collector QTavColl = 0 #temperature during the year USHj = 0 QHXj = 0 HPerYear = 0 annualDemand=0 annualGbT =0 annualGdT =0 HTilted = 0 for it in range(Status.Nt): time_in_h = it * TIMESTEP time_in_s = time_in_h * HOUR nday = int(ceil(time_in_h/24.0)) # print "DAY: %s Hour: %s Sec: %s"%(nday,time_in_h,time_in_s) #............................................................................. # recalculate solar data for a new day # The function PREP_SUN prepares the radiation calculations for a given day # in the year if nday > oldDay: oldDay = nday #HS2008-07-10: Multiplication with EXTRAPOLATE_TO_YEAR added. so a full solar year will be # simulated also if calculation time is less than 8760 !!! nday_solar = int(nday*Status.EXTRAPOLATE_TO_YEAR + 0.1) sunOnH.t = getDailyRadiation(I,nday_solar) prep_sun(self.latitude, self.inclination, self.azimuth, nday_solar, sunAnglesOnSurface, sunOnH) if DEBUG in ["ALL","BASIC"]: print "NEW DAY: %s H = %s"%(nday_solar,sunOnH.t) print "lat %s inc %s azi %s"%(self.latitude,self.inclination,self.azimuth) #............................................................................. # now get instantaneous radiation (in W/m2) GT_W = sun_hourly(sunAnglesOnSurface,sunOnH,time_in_s) #GT_W: radiation in [W] vs. GT in [kW]!!! GbT = GT_W.b / 1000. #conversion to kW/m2 GdT = GT_W.d / 1000. GT = GT_W.t / 1000. # calculation of tan(incidence_angle). needed later on for efficiency calculation. if GT_W.n[2] <= 0: tanThetaT = INFINITE tanThetaL = INFINITE else: tanThetaT = fabs(GT_W.n[0]/GT_W.n[2]) tanThetaL = fabs(GT_W.n[1]/GT_W.n[2]) if DEBUG in ["ALL"]: print "ModuleST (cEF): dirSunOnT = %s"%GT_W.n annualGbT += GbT * TIMESTEP annualGdT += GdT * TIMESTEP #............................................................................. # calculate maximum solar system output, heat demand and storage capacity # The working temperature of the solar system is the temperature # of the storage tank at the beginning of the time-step plus a Delta_T # accounting for the heat exchanger in the primary loop deltaT_primary = 7.0 TStorage = QStorage/CStorage TavCollector = TStorage + deltaT_primary #=working temperature of the collector in the present time step DeltaT = TavCollector - self.TAmb eff = collectorEfficiencyBiaxial(GT_W.b,GT_W.d,tanThetaL,tanThetaT,DeltaT,ST_C0,ST_C1,ST_C2,ST_K50L,ST_K50T) if DEBUG in ["ALL"]: print"tanThetaL %s tanThetaT %s eff %s"%(tanThetaL,tanThetaT,eff) dotQuSolarMax = eff*systemEfficiency*SurfAreaSol*GT*self.shLoss #*shadingFactor!!! if shaded then add shading factor.ADD an IF! dotQuSolarMax = max(dotQuSolarMax,0) #solar system regulation controls that there's no negative Qu !!! # determination of minimum and maximum demand and corresponding temperature levels # the minimum temperature of demand indicates to what temperature the storage can be cooled down. # if we have heat demand only above e.g. 60ºC, we cannot cool down the storage lower than this, # as heat can not be transferred from cold to hot (at least not yet, maybe EINSTEIN succeeds to do it) Tmax_it = min(Tmax,TStorage) #in the present time step, the maximum temperature #that can be supplied corresponds to the storage temperature iTmax = (int(floor(Tmax_it/Status.TemperatureInterval+0.5))) dotQDemand = QD_Tt[iTmax][it]/Status.TimeStep iTmin = NT+1 iTsol = NT+1 for iT in range(NT+1): if QD_Tt[iT][it] > 0: iTmin = iT break TMinDemand = iTmin*Status.TemperatureInterval # calculate actual solar system production QStorageCapacity = max(QStorageMax - QStorage,0.0) #maximum amount of heat that still can be fed into the storage dotQuSolar = min(dotQDemand+QStorageCapacity/TIMESTEP,dotQuSolarMax) #solar production constrained by demand + remaining storage capacity # calculate actual heat delivery to demand QStorageMin = CStorage*TMinDemand #minimum heat that has to remain within the storage, as it can't be cooled down further dotQuSupply = min(dotQDemand,dotQuSolar + max((QStorage - QStorageMin)/TIMESTEP,0)) #supply constrained by solar production + available heat stored at T > TMinDemand if DEBUG in ["ALL","BASIC"]: print"ModuleST (calculateEnergyFlows): time: %s eff: %s DT: %s GT: %s dotQu: %s dotQuSolar: %s Tamb: %s"%\ (time_in_h,eff,DeltaT,GT, dotQuSupply, dotQuSolar,self.TAmb) # now update heat stored in tank QStorage += (dotQuSolar - dotQuSupply)*TIMESTEP if dotQuSolar > 0: print "ModuleST (cEF): it %s dotQuSolar %s TavColl %s TStorage %s TMinDemand %s "%\ (it,dotQuSolar,TavCollector,TStorage,TMinDemand) HPerYear += Status.TimeStep USHj_t = dotQuSupply*TIMESTEP annualDemand += dotQDemand * TIMESTEP QavColl += dotQuSolar QTavColl += dotQuSolar*TavCollector USHj += USHj_t HTilted += GT*TIMESTEP # now the remaining problem is to decide at WHAT temperature the solar system does supply heat (from USHj_t to USHj_Tt) # -> let's use the simplest possible solution (although it's not the most efficient one ...): # fill up the demand from below for iT in range(NT+2): USHj_Tt[iT][it] = min(USHj_t,QD_Tt[iT][it]) QD_Tt[iT][it] -= USHj_Tt[iT][it] if it%100 == 0: dlg.update(100.0*it/Status.Nt) #............................................................................. #............................................................................. #............................................................................. #............................................................................. #............................................................................. # end of the year reached. now some final calculations dlg.Destroy() self.TavCollMean = QTavColl/max(QavColl,0.000000001) #........................................................................ # Store results in interfaces # remaining heat demand and availability for next equipment in cascade Status.int.QD_Tt_mod[cascadeIndex] = QD_Tt Status.int.QD_T_mod[cascadeIndex] = Status.int.calcQ_T(QD_Tt) Status.int.QA_Tt_mod[cascadeIndex] = QA_Tt Status.int.QA_T_mod[cascadeIndex] = Status.int.calcQ_T(QA_Tt) # heat delivered by present equipment Status.int.USHj_Tt[cascadeIndex-1] = USHj_Tt Status.int.USHj_T[cascadeIndex-1] = Status.int.calcQ_T(USHj_Tt) Status.int.USHj_t[cascadeIndex-1] = copy.deepcopy(USHj_Tt[Status.NT+1]) # waste heat absorbed by present equipment Status.int.QHXj_Tt[cascadeIndex-1] = QHXj_Tt Status.int.QHXj_T[cascadeIndex-1] = Status.int.calcQ_T(QHXj_Tt) Status.int.QHXj_t[cascadeIndex-1] = copy.deepcopy(QHXj_Tt[Status.NT+1]) #........................................................................ # Indicate that present level of cascade has been updated Status.int.cascadeUpdateLevel = cascadeIndex #........................................................................ # Global results (annual energy flows) equipe.update({"HTilted":HTilted*Status.EXTRAPOLATE_TO_YEAR}) #### E.F. 28/07 Status.SQL.commit() #### E.F. 28/07 FETFuel_j = 0.0 Status.int.USHj[cascadeIndex-1] = USHj*Status.EXTRAPOLATE_TO_YEAR Status.int.FETFuel_j[cascadeIndex-1] = FETFuel_j*Status.EXTRAPOLATE_TO_YEAR Status.int.FETel_j[cascadeIndex-1] = PARASITIC_ELECTRICITY*USHj*Status.EXTRAPOLATE_TO_YEAR Status.int.HPerYearEq[cascadeIndex-1] = HPerYear*Status.EXTRAPOLATE_TO_YEAR if DEBUG in ["ALL","BASIC"]: print "ModuleST (cEF): USH: %s HT: %s HbT: %s HdT: %s"%\ (USHj*Status.EXTRAPOLATE_TO_YEAR, HTilted*Status.EXTRAPOLATE_TO_YEAR, annualGbT*Status.EXTRAPOLATE_TO_YEAR, annualGdT*Status.EXTRAPOLATE_TO_YEAR) self.calculateOM(equipe,USHj*Status.EXTRAPOLATE_TO_YEAR) return USHj*Status.EXTRAPOLATE_TO_YEAR #============================================================================== #============================================================================== #============================================================================== # FUNCTIONS FOR SURFACE CALCULATIONS AND WEATHER DATA #============================================================================== #============================================================================== #============================================================================== #------------------------------------------------------------------------------ def resetST(self): #------------------------------------------------------------------------------ # resets the surface and weather flag. for calls outside from moduleST # at present reset is called in: # - setActiveProject: -> always when a new project is selected # - PanelQ7 - OK and DELETE buttons: -> always when the user changes some- # thing manually in the surface or weather data #------------------------------------------------------------------------------ self.atmosfericFlag = 0 self.surfaceFlag = 0 #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def set_IDefault(self): #------------------------------------------------------------------------------ # Function from Claudia to calculate the radiation (estimates yearly radiation from latitude) #------------------------------------------------------------------------------ self.ST_IDefault = -0.0002*pow(self.latitude,4.0)+\ 0.2547*pow(self.latitude,3.0)-\ 31.055*pow(self.latitude,2.0)+\ 1245.4*self.latitude-\ 14419 logWarning(_("The yearly incident solar radiation has not been defined. \nValue calculated from default correlation: H [kWh/m2] = %s")%\ self.ST_IDefault) #------------------------------------------------------------------------------ def generalData(self): #------------------------------------------------------------------------------ # Sets general data for module calculations (H, TAmb, latitude, etc.) #------------------------------------------------------------------------------ renTable = Status.DB.qrenewables.Questionnaire_id[Status.PId] #........................................................................ # read in latitude (set to default if no reasonable value) if len (renTable)>0 and renTable[0].Latitude is not None: self.latitude = renTable[0].Latitude else: logWarning(_("The geographic latitude has not been defined. \n45 deg North (Southern Europe) assumed as default")) self.latitude = 40.0 #........................................................................ # read in yearly solar radiation on horizontal (set to default if no reasonable value) if len (renTable)> 0 and renTable[0].ST_I is not None: if 100.0 < renTable[0].ST_I < 3000.0: self.ST_IDefault = renTable[0].ST_I else: self.set_IDefault() else: self.set_IDefault() if DEBUG in ["ALL","BASIC"]: print "ModuleST (generalData): H = ", self.ST_IDefault #........................................................................ # read in ambient temperature (set to default if no reasonable value) if len (renTable)>0 and renTable[0].TAmb!=None: self.TAmb = renTable[0].TAmb else: self.TAmb = -0.0143*pow(self.latitude,2.0) + 0.4668*self.latitude + 20.5 logWarning(_("The yearly mean ambient temperature has not been defined. \nValue calculated from default correlation: TAmb [C] = %s")%\ self.TAmb) #.............................................................................. # surface area factor (-> based on default inclination and collector row separation) print "ModuleST (generalData): latitude = ",self.latitude self.surfAreaFactorDef = 0.0042*pow(self.latitude,2.0) - 0.3044*self.latitude + 8.0 #.............................................................................. # finally set Flag self.atmosfericFlag=1 #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def defineCalcParams(self): #------------------------------------------------------------------------------ # ??? #------------------------------------------------------------------------------ MININCLINATION=20 if len(self.usableSurfaces)==1: if self.usableSurfaces[0]["inclination"]!= None and self.usableSurfaces[0]["inclination"]>MININCLINATION: inclinationOpt=self.usableSurfaces[0]["inclination"] else: inclinationOpt=self.latitude -10 if self.usableSurfaces[0]["azimuth"] != None: azimuthOpt = self.usableSurfaces[0]["azimuth"] else: azimuthOpt = 0 if self.allShaded==1: shLoss=0.8 else: shLoss=1 else: azimuthOpt = 0 shLoss=1 inclinationOpt=self.latitude -10 self.surfaceFlag = 1 return (inclinationOpt,azimuthOpt,shLoss) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def screenSurfaces(self): #------------------------------------------------------------------------------ # screens the available surfaces for their aptitude for solar energy use #------------------------------------------------------------------------------ # screen existing surfaces and add to self.surfaces sqlQuery = "ProjectId = '%s'"%(Status.PId) self.qsurfareas= Status.DB.qsurfarea.sql_select(sqlQuery) # This DB doesn't exist jet!! self.surfaces=[] for qsurfarea in self.qsurfareas: self.surfaces.append({"surfAreaName":qsurfarea.SurfAreaName,\ "surfArea":qsurfarea.SurfArea,\ "inclination":qsurfarea.Inclination,\ "azimuth":qsurfarea.Azimuth,\ "azimuthClass":qsurfarea.AzimuthClass,\ "shading":qsurfarea.Shading,\ "distance":qsurfarea.Distance,\ "roofType":qsurfarea.RoofType,\ "roofStaticLoadCap":qsurfarea.RoofStaticLoadCap,\ "enclBuildGroundSketch":qsurfarea.Sketch,\ "ST_ibT":qsurfarea.ST_IbT,\ "ST_IT":qsurfarea.ST_IT}) #if inclination, azimuth, azimuthClass, shading are None we assume some default value!!! for i in range(len(self.surfaces)): if self.surfaces[i]["inclination"] == None: self.surfaces[i]["inclination"] = 0 logWarning(_("Surface %s: no inclination specified. 0º assumed")%(i+1)) if self.surfaces[i]["azimuth"] == None: self.surfaces[i]["azimuth"] =0 # logWarning(_("Surface %s: no azimuth specified. 0º assumed")%(i+1)) if self.surfaces[i]["azimuthClass"] == None: self.surfaces[i]["azimuthClass"] = "S" logWarning(_("Surface %s: no azimuth specified. South orientation assumed")%(i+1)) self.NSurfaces = len(self.surfaces) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def calcNetSurfAreaFactor (self,i,MININCLINATION): #------------------------------------------------------------------------------ # ??? #------------------------------------------------------------------------------ NetSurfAreaFactorSloped=1.2 if self.surfaces[i]["azimuthClass"]=="S" and self.surfaces[i]["inclination"]> MININCLINATION: self.NetSurfAreaFactor=NetSurfAreaFactorSloped else: logTrack("ModuleST (calcNetSAF): latitude = %s"%self.latitude) self.NetSurfAreaFactor=0.0042*pow(self.latitude,2.0) -0.3044*self.latitude + 8.0 #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def checkNetSurfArea(self,i): #------------------------------------------------------------------------------ MINSURFACE = 20 NetSurfAreaPartial=self.surfaces[i]["surfArea"]/self.NetSurfAreaFactor if NetSurfAreaPartial>=MINSURFACE: f1=1 else: f1=0 logMessage(_("In '%s' the surface available for the collectors mounting is too small.")%(self.surfaces[i]["surfAreaName"])) return (f1,NetSurfAreaPartial) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def checkDistance(self,i): #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ DISTANCECONSTRAINT= 1500 DistanceFactor=(-2*0.0000001*pow(self.surfaces[i]["surfArea"],2))+(0.0022*self.surfaces[i]["surfArea"])+0.3938 MaxDistance=self.surfaces[i]["surfArea"]/(DistanceFactor*self.NetSurfAreaFactor) if self.surfaces[i]["distance"]!=None and self.surfaces[i]["distance"] > 1.1*min(DISTANCECONSTRAINT , MaxDistance): # f2=0 f2=1 logWarning(_("Distance between the solar field'%s' and the technical room or process is too long")%\ (self.surfaces[i]["surfAreaName"])) else: f2=1 return (f2) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def checkOrientation(self,i): #------------------------------------------------------------------------------ MININCLINATION = 20 if self.surfaces[i]["azimuthClass"]==("N" or "NE" or "NW"): if self.surfaces[i]["inclination"]<MININCLINATION: f3=1 else: f3=0 logMessage(_("Area '%s' oriented to North:not suitable.")%\ (self.surfaces[i]["surfAreaName"])) else: f3=1 return (f3) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def checkShading(self,i): #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ if self.surfaces[i]["shading"] == "Yes,fully shaded": #==SHADINGTYPES.keys()[2] f4=0 fs=1 logMessage(_("Area '%s' shaded: not suitable for collectors mounting.")%(self.surfaces[i]["surfAreaName"])) else: f4=1 if self.surfaces[i]["shading"] == "Yes,partially shaded" : fs=1 else: fs=0 return (f4,fs) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def checkLoad(self,i): #------------------------------------------------------------------------------ # checks static load capacity of the roof #------------------------------------------------------------------------------ MINSTATICROOF = 25 if self.surfaces[i]["roofStaticLoadCap"] ==None: f5=1 if self.surfaces[i]["roofType"] in ["Corrugated metal roof","Composite sandwich panels","Other"]: logMessage(_("Check the static load capacity of the roof '%s'and the collectors mounting feasibility.")%\ (self.surfaces[i]["surfAreaName"])) elif self.surfaces[i]["roofStaticLoadCap"] >= MINSTATICROOF: f5=1 else: f5=0 return(f5) #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ def calcSurfArea(self): #------------------------------------------------------------------------------ # ??? #------------------------------------------------------------------------------ MINSURFACE=20 # The minimum area considered is 20 m^2 DISTANCECONSTRAINT=1500 MININCLINATION=20 MAXINCLINATION = 90 self.MINTOTNETSURFAREA = 40 NetSurfAreaFactorSloped=1.2 self.allShaded=1 self.usableSurfacesArea=0 self.usableSurfaces=[] self.usableSurfacesData=[] self.TotAvailSurfArea=0 self.grossSurfArea=0 self.screenSurfaces() for i in range(self.NSurfaces): # if latitude: if>70 and >20°data entering error if self.surfaces[i]["inclination"]>MAXINCLINATION: showWarning(_("Check surface '%s' inclination: out of range.")%(self.surfaces[i]["surfAreaName"])) self.calcNetSurfAreaFactor(i,MININCLINATION) (f1,NetSurfAreaPartial)=self.checkNetSurfArea(i) f2=self.checkDistance(i) f3=self.checkOrientation(i) f4,fs=self.checkShading(i) if self.surfaces[i]["roofType"] in ["Corrugated metal roof","Composite sandwich panels","Other","Concrete roof","Tilted roof"]: f5=self.checkLoad(i) else: f5=1 self.grossSurfArea += NetSurfAreaPartial*f1*f2*f3*f4*f5 self.TotAvailSurfArea += self.surfaces[i]["surfArea"] self.usableSurfacesArea += self.surfaces[i]["surfArea"]*f1*f2*f3*f4*f5 if f1*f2*f3*f4*f5==1: self.allShaded= self.allShaded*fs self.usableSurfaces.append(self.surfaces[i]) self.us... [truncated message content] |
From: Hans S. <han...@en...> - 2008-10-24 17:56:21
|
Please take care that in your einstein.ini file (in einstein/gui) theres encoding set to latin1. Otherwise there are problems. Bettina, please check if with this the connection in Panel Q6 (hx) works again. Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Praktikant7, N. <NTS...@jo...> - 2008-10-24 15:58:01
|
Hi all, Please see below some more comments from Florian for the explanation of the TCA... > Dear all, > > The new TCA should now calculate right and store all necessary results > in the database. We checked it with different test projects, and it > works quite well. Please check it also! > > Enrico: sorry for the late respond. The problems in TCA module you > tested are now (hopefully) all fixed. Just some comments: > - The cost categories in "Detailed operating cost" can only be added or > removed. This is because of the security problem, those costs are taken > from the database, it's not good if we can change them very easily. So > if you would like to introduce other costs, you need to add the new ones > and remove the old ones. this is not true, you can now also change the entrys. (just click an entry, then the button change to "change" the security problem was mainly with the operating cost (so this is why we disabled the total operating cost textfield) if in case of database inconsitency (the entry has an name that is not in our dropdown box) it will be added automaticaly > - The fuel and electricity prices used in TCA calculation are always the > same between the new proposals and the current state. So at the fist > loop of TCA calculation, we will take the prices you enter in Q2 panel, > then when you introduce some new values in TCA, they will be applied in > BOTH the present state and the new proposals. > - The others: please check again, it should work correctly! > > Sunny regards, > Huyen > > > ------------------------------------------------------------------------ > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > |
From: claudia v. <cla...@gm...> - 2008-10-24 15:28:14
|
Hello, a quick hint at a first look I have still some problems with the legenda of the graphs. Does it depend on the TCA module or is it a general problem? Try to compare several alternatives on the TCA main, then remove them and to go diagram again... thanks cla 2008/10/24 Praktikant7, NTS <NTS...@jo...> > > > Dear all, > > The new TCA should now calculate right and store all necessary results > in the database. We checked it with different test projects, and it > works quite well. Please check it also! > > Enrico: sorry for the late respond. The problems in TCA module you > tested are now (hopefully) all fixed. Just some comments: > - The cost categories in "Detailed operating cost" can only be added or > removed. This is because of the security problem, those costs are taken > from the database, it's not good if we can change them very easily. So > if you would like to introduce other costs, you need to add the new ones > and remove the old ones. > - The fuel and electricity prices used in TCA calculation are always the > same between the new proposals and the current state. So at the fist > loop of TCA calculation, we will take the prices you enter in Q2 panel, > then when you introduce some new values in TCA, they will be applied in > BOTH the present state and the new proposals. > - The others: please check again, it should work correctly! > > Sunny regards, > Huyen > > > ------------------------------------------------------------------------ > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > > -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 – 00184 Rome Tel.: +39 0644585271 – 234 e-mail: cla...@gm... cla...@un... ****************************************************** |
From: claudia v. <cla...@gm...> - 2008-10-24 15:13:29
|
Super...now I have 67.500€ for 13,9 m2 HX, Dt 10 I will buy it!!! ;-) 2008/10/24 Slawitsch, Bettina <Bet...@jo...> > Dear all, > > An another small update for the moduleHR.py, that the lower HX > turnkeyprices - as they are calculated with the latest PE2 version from > yesterday, are also calculated like this, if the user recalculates the HX in > the HR panel. Please tell me if our correcting factors are more or less ok > with you. > > Please shout if anything works bad in our modules, in the meantime we close > the programming and focus on the examples. > > Regards, > > bettina > > > -----Ursprüngliche Nachricht----- > Von: Praktikant7, NTS [mailto:NTS...@jo...] > Gesendet: Freitag, 24. Oktober 2008 16:23 > An: Hans Schweiger; EINSTEIN-developers > Betreff: [Einstein-developers] TCA update !!!! > > > > Dear all, > > The new TCA should now calculate right and store all necessary results in > the database. We checked it with different test projects, and it works quite > well. Please check it also! > > Enrico: sorry for the late respond. The problems in TCA module you tested > are now (hopefully) all fixed. Just some comments: > - The cost categories in "Detailed operating cost" can only be added or > removed. This is because of the security problem, those costs are taken from > the database, it's not good if we can change them very easily. So if you > would like to introduce other costs, you need to add the new ones and remove > the old ones. > - The fuel and electricity prices used in TCA calculation are always the > same between the new proposals and the current state. So at the fist loop of > TCA calculation, we will take the prices you enter in Q2 panel, then when > you introduce some new values in TCA, they will be applied in BOTH the > present state and the new proposals. > - The others: please check again, it should work correctly! > > Sunny regards, > Huyen > > > ------------------------------------------------------------------------ > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & win > great prizes Grand prize is a trip for two to an Open Source event anywhere > in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > > -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 – 00184 Rome Tel.: +39 0644585271 – 234 e-mail: cla...@gm... cla...@un... ****************************************************** |
From: Slawitsch, B. <Bet...@jo...> - 2008-10-24 14:57:43
|
Dear all, An another small update for the moduleHR.py, that the lower HX turnkeyprices - as they are calculated with the latest PE2 version from yesterday, are also calculated like this, if the user recalculates the HX in the HR panel. Please tell me if our correcting factors are more or less ok with you. Please shout if anything works bad in our modules, in the meantime we close the programming and focus on the examples. Regards, bettina -----Ursprüngliche Nachricht----- Von: Praktikant7, NTS [mailto:NTS...@jo...] Gesendet: Freitag, 24. Oktober 2008 16:23 An: Hans Schweiger; EINSTEIN-developers Betreff: [Einstein-developers] TCA update !!!! Dear all, The new TCA should now calculate right and store all necessary results in the database. We checked it with different test projects, and it works quite well. Please check it also! Enrico: sorry for the late respond. The problems in TCA module you tested are now (hopefully) all fixed. Just some comments: - The cost categories in "Detailed operating cost" can only be added or removed. This is because of the security problem, those costs are taken from the database, it's not good if we can change them very easily. So if you would like to introduce other costs, you need to add the new ones and remove the old ones. - The fuel and electricity prices used in TCA calculation are always the same between the new proposals and the current state. So at the fist loop of TCA calculation, we will take the prices you enter in Q2 panel, then when you introduce some new values in TCA, they will be applied in BOTH the present state and the new proposals. - The others: please check again, it should work correctly! Sunny regards, Huyen ------------------------------------------------------------------------ - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Einstein-developers mailing list Ein...@li... https://lists.sourceforge.net/lists/listinfo/einstein-developers |
From: claudia v. <cla...@gm...> - 2008-10-24 14:45:06
|
Ok, thank you! test on Tca tomorrow: today enrico is not there regards claudia 2008/10/24 Praktikant7, NTS <NTS...@jo...> > > > Dear all, > > The new TCA should now calculate right and store all necessary results > in the database. We checked it with different test projects, and it > works quite well. Please check it also! > > Enrico: sorry for the late respond. The problems in TCA module you > tested are now (hopefully) all fixed. Just some comments: > - The cost categories in "Detailed operating cost" can only be added or > removed. This is because of the security problem, those costs are taken > from the database, it's not good if we can change them very easily. So > if you would like to introduce other costs, you need to add the new ones > and remove the old ones. > - The fuel and electricity prices used in TCA calculation are always the > same between the new proposals and the current state. So at the fist > loop of TCA calculation, we will take the prices you enter in Q2 panel, > then when you introduce some new values in TCA, they will be applied in > BOTH the present state and the new proposals. > - The others: please check again, it should work correctly! > > Sunny regards, > Huyen > > > ------------------------------------------------------------------------ > - > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the > world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > > -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 – 00184 Rome Tel.: +39 0644585271 – 234 e-mail: cla...@gm... cla...@un... ****************************************************** |
From: Praktikant7, N. <NTS...@jo...> - 2008-10-24 14:23:35
|
Dear all, The new TCA should now calculate right and store all necessary results in the database. We checked it with different test projects, and it works quite well. Please check it also! Enrico: sorry for the late respond. The problems in TCA module you tested are now (hopefully) all fixed. Just some comments: - The cost categories in "Detailed operating cost" can only be added or removed. This is because of the security problem, those costs are taken from the database, it's not good if we can change them very easily. So if you would like to introduce other costs, you need to add the new ones and remove the old ones. - The fuel and electricity prices used in TCA calculation are always the same between the new proposals and the current state. So at the fist loop of TCA calculation, we will take the prices you enter in Q2 panel, then when you introduce some new values in TCA, they will be applied in BOTH the present state and the new proposals. - The others: please check again, it should work correctly! Sunny regards, Huyen ------------------------------------------------------------------------ - This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Einstein-developers mailing list Ein...@li... https://lists.sourceforge.net/lists/listinfo/einstein-developers |
From: Hans S. <han...@en...> - 2008-10-24 08:50:13
|
New features: modified ModuleHR now uploaded - please do final testing with the basic example cases 41 - 43 if there's any problem ... (and report me your test results, also - and especially - if positive !!!) fantastic and marvellous new auto-pilot that (a) designs heat recovery also in PE2 - mode (please test) and (b) if you go to interaction level = "automatic" doesn't ask you confirmation for each step, wheras (c) if you are in semi-automatic or interactive, gives You the possibility to interrupt the auto-pilot session. Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Slawitsch, B. <Bet...@jo...> - 2008-10-23 15:30:46
|
Dear all, 1) new PE2 - should now calculate all energy balances right, I checked the YED curves for 41, 42, 43, meat industry - by looking at the curves they seem reasonable. 43 I tested in complete detail, it works correctly. Please check also! Hans, in general we only need these 3 files in this new PE2.zip for the calculation, not all the dlls. 2) examples: yes, also our internal deadline is tomorrow. I made some improvements in the car industry, and recalculated the project, still new problems in the consistency occur. You said there was an update for conversion between mass/volume - also for the natural gas? I send my xml enclosed, would be great if you could check it shortly and tell me where my mistake is. For explanation on the project, probably skype is the best - however has time to check the consistency and then has questions, just skype me! 3) small minor comments: Deleting a porject gives the error message: corrupt data in database Passing the consistency gives the pop up: "Sorry data did not convert". By clicking ok, you come to the message: Congratulations. Equipment prices should be stored as TurnKEyPrices - in dbboiler and dbheatpump most prices are stored in the column: "Price" and "TurnKEyPrice" is null... More on TCA in a seperate email...we just update it! Sunny regards, Bettina -----Ursprüngliche Nachricht----- Von: Hans Schweiger [mailto:han...@en...] Gesendet: Donnerstag, 23. Oktober 2008 16:43 An: EINSTEIN-developers Betreff: [Einstein-developers] Example cases for 2nd training day Stoyan, Bettina, The example cases for the 2nd training day (xml's + description) should be finished until latest tomorrow, so that Claudia and Enrico have at least the week-end for familiarizing with them and preparing the exercise. On Sunday we will make a correction of the release, where these examples should be included. Please tell me if there is some problem with this deadline. Sunny regards, Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Einstein-developers mailing list Ein...@li... https://lists.sourceforge.net/lists/listinfo/einstein-developers |
From: Hans S. <han...@en...> - 2008-10-23 14:43:30
|
Stoyan, Bettina, The example cases for the 2nd training day (xml's + description) should be finished until latest tomorrow, so that Claudia and Enrico have at least the week-end for familiarizing with them and preparing the exercise. On Sunday we will make a correction of the release, where these examples should be included. Please tell me if there is some problem with this deadline. Sunny regards, Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Hans S. <han...@en...> - 2008-10-21 19:41:47
|
Stoyan, Bettina, Onby a new ModuleHR that should solve SOME of the problems with the HP. Regarding the DEMAND and AVAILABILITY that is used as a base for the HP design: - You should check: a) what comes out of HR Module b) what come in to the HP Module which one is ok / which one is wrong. Please as a first step let's assure that what comes out of HR and finally is stored in Status.int.QD_T(t)_mod[0],Status.int.QA_T(t)_mod[0] - the values read by the equipment cascade is really ok. In the YED curve of PE2 for the present state (no HX) PE2 gives a QD of about 10000 MWh and a QA of 5600 - 1400 = approx. 4200 MWh of waste heat contained in the waste water (exhaust gas is not considered in the actual __doPostProcessing function in ModuleHR, as we have no time and temperature dependent profile of boiler waste heat available !!!; also PE2 doesn't design any heat exchanger that takes exhaust gas as a hot stream ...) After HX Design PE2 gives a remaining QD of 8200 MWh and a remaining QA of 2100 - 1500 MWh = 600 MWh for the waste water part. Question 1. The availability of heat in the waste water has been reduced by 4200 - 600 = 3600 MWh, whereas the demand only has been reduced by 10000 - 8200 Mwh = 1800 MWh. Where have the other 1800 Mwh gone ??? Question 2. Summing the heat flows over the 4 heat exchangers gives 894 + 52 + 27 + 183 MWh = approx. 1150 MWh, which is different from 1800 (the reduction in QD) and different from 3600 (the reduction in QA). Then going into the HP window I see a demand of 8500 MWh, which could be the 8200 MWh + the distribution losses = ok. and I see a remaining QA of 2500 MWh, which is different from 600, also different from 4200 - 1150 = 3000, but could be in coincidence with 4200 - 1800 = 2400 ... ??? Bettina - could You please check - together with Stoyan, where's the problem ... ? - is the problem already in the PE2 output that comes back ? - in the doPostProcessing function ? - or is there something wrong from the doPostProcessing (ModuleHR) output towards the HP module ? By the way: the new moduleHR.py should be better than the old one (of the release), but I don't want to upload it before we're not sure that the demo cases (guide 41 - 43) continue working well with it, so You won't find it on SVN. Could You please do some tests on this ? Thanks, Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: claudia v. <cla...@gm...> - 2008-10-21 09:57:52
|
YUHHuHHuHHHuHH! 2008/10/21 Hans Schweiger <han...@en...> > Dear all, > > For that the PO Module shows you something, you have to install the po-data > (load the file like any other sql-update !!!, but you have to pick the > command "USE einstein;" first) > > Regards, > Hans > > -- > __________________________ > Dr. Hans Schweiger > > energyXperts.BCN > > Ingeniería Termo-energética y Energías Renovables > Thermo-energetical Engineering and Renewable Energies > > Creu dels Molers, 15, 2o 1a > 08004 Barcelona (Spain) > > www.energyxperts.net > > e-mail: han...@en... > tel/fax: +34 934 415 395 > mobile: +34 697 267 280 > > > > > > > -- Dump from PO Table - Huyen and Bettina (16.10.2008) > -- Table structure for table `pounitoperation` > -- > > DROP TABLE IF EXISTS `pounitoperation`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `pounitoperation` ( > `IDUnitOperation` int(11) NOT NULL AUTO_INCREMENT, > `Name` varchar(300) NOT NULL, > `Code` varchar(20) NOT NULL, > PRIMARY KEY (`IDUnitOperation`) > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `pounitoperation` > -- > > LOCK TABLES `pounitoperation` WRITE; > /*!40000 ALTER TABLE `pounitoperation` DISABLE KEYS */; > INSERT INTO `pounitoperation` VALUES > (4,'CLEANING','PO01'),(5,'DRYING','PO02'),(6,'EVAPORATION AND > DISTILLATION','PO03'),(7,'BLANCHING','PO04'),(8,'PASTEURIZATION','PO05'),(9,'STERILIZATION','PO06'),(10,'COOKING','PO07'),(11,'OTHER > PROCESS HEATING','PO08'),(12,'GENERAL PROCESS HEATING','PO09'),(13,'HEATING > OF PRODUCTION HALLS','PO10'),(14,'COOLING OF PRODUCTION > HALLS','PO11'),(15,'COOLING PROCESSES > ','PO12'),(16,'MELTING','PO13'),(17,'EXTRACTION','PO14'),(18,'BLEACHING','PO15'),(19,'PAINTING','PO16'),(20,'SURFACE > TREATMENT','PO17'); > /*!40000 ALTER TABLE `pounitoperation` ENABLE KEYS */; > UNLOCK TABLES; > > -- > -- Table structure for table `poefficiencymeasure` > -- > > DROP TABLE IF EXISTS `poefficiencymeasure`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `poefficiencymeasure` ( > `IDEfficiencyMeasure` int(11) NOT NULL AUTO_INCREMENT, > `ShortDescription` varchar(300) NOT NULL, > `Text` text NOT NULL, > PRIMARY KEY (`IDEfficiencyMeasure`) > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `poefficiencymeasure` > -- > > LOCK TABLES `poefficiencymeasure` WRITE; > /*!40000 ALTER TABLE `poefficiencymeasure` DISABLE KEYS */; > INSERT INTO `poefficiencymeasure` VALUES (7,'Usage of heat > exchanger','Install heat exchangers to recover thermal energy from > condensate in its bottle washing section and fuel oil heater > condensate'),(8,'Cascaded use of wash water ','Cascaded use of wash water > '),(9,'Low temperature detergents','Low temperature detergents in washing: > Use of final rinsing water for pre-rinsing, intermediate rinsing or the > preparation of cleaning solution (often used in CIP systems); turbidity > detectors can optimize the reuse of water'),(10,'Reuse pasteurizing overflow > water','Reuse pasteurizing overflow water'),(11,'Use store heat / solar > heat','Use store heat / solar heat for heating system for start > up'),(12,'Preheat incoming containers','Preheat incoming containers (ambient > air, solar)'),(13,'Local generation of hot water','Local generation of hot > water\n'),(14,'Use of hot water instead of steam ','Use of hot water instead > of steam (no distribution losses, no HEX losses etc.)\n\n'),(15,'Insulating > high temperature zones of unit','Insulating high temperature zones of > unit\n'),(16,'Thinner glass / more conductive materials','Thinner glass / > more conductive materials lower the driving temperature (temp drop across > glass now: 5-15°C)\n'),(17,'Even heating/cooling','Even heating/cooling > increase heat transfer and shorten process times\n'),(18,'Immersion, > spraying from below another heat transfer systems','Immersion, spraying from > below, or other heat transfer systems may increase internal convection and > allow process time to be shorter\n'),(19,'Little temperature increase of > containers leaving the unit','Aiming at very little temperature increase of > containers leaving the unit (normally +20°C compared to entrance > temp)\n'),(20,'Usage of waste heat','Evaporatively cooled water, absorption > or ejector cooling with waste heat or other strategies may be used for > cooling, if necessary\n\n'),(21,'Reuse pasteurizing overflow water','Reuse > pasteurizing overflow water\n'),(22,'Conjunction with heat recovery > ','Possible use in conjunction with heat recovery or at variable basis to > achieve specified temperatures where variable heat sources are available or > flow rates vary. Efficiency at 90% (conversion from electricity). Power from > cogeneration can enhance economic/ecological performance.\n'),(23,'Reducing > pressure drop over filters','Reducing pressure drop over filters is > decisive. Strategies using centrifuges\n\n'),(24,'Use of vapour condensers > in wort boiling','Use of vapour condensers in wort boiling to collect hot > water from condensate \n\n\n'),(25,'Capture of waste energy from > mashing','Capture of waste energy from mashing\n\n\n\n'),(26,'Use of > compession filter in mashing','Use of compession filter in > mashing\n\n\n\n\n'),(27,'Install heat recovery cellars to reduce > refrigeration loss ','Install heat recovery cellars to reduce refrigeration > loss \n\n\n\n\n\n'),(28,'Install a system to recover CO2 from the > fermentation ','Install a system to recover CO2 from the fermentation for > the later use in carbonation process\n\n\n\n\n\n\n'),(29,'Heat recovery from > wort cooling','Use of spent cooling water from wort cooling as process water > for the next mash\n\n\n\n\n\n\n\n'),(32,'Closed smoking and cooking > operation','Reduction of energy demand in closed smoking/cooking compared to > open system\n\n\n\n\n\n'),(33,'Drying with low air flow','500-600m3/h air > flow in drying is common in most modern chambers \n\n\n\n\n\n\n'),(31,'Dew > point regulation for cooling process','Reduction of air ventilation to the > necessary minimum for an efficient process increases the operation > efficiency (less excess air), saving potential up to > 5%\n\n\n\n\n\n\n\n\n'),(34,'Use of waste heat of cooling machines and > compressors','High potential if a low temperature demand > exists\n\n\n\n\n\n\n\n'),(35,'Thawing in air ','Thawing in air > \n\n\n\n\n\n\n\n\n'),(36,'Gas motor driven cooling machines','Gas motor > driven cooling machines\n\n\n\n\n\n\n\n\n\n'),(37,'Absorbtion cooling with > waste heat','Absorbtion cooling with waste heat (from a CHP > plant)\n\n\n\n\n\n\n\n\n\n\n'),(38,'Dew point regulation for drying > process','Reduction of drying air to the necessary minimum for an efficient > process increases the operation efficiency (less excess air); saving > potential up to 5%\n\n\n\n\n\n\n\n\n\n\n\n'),(39,'Fermenter: heat exchange > between cold milk and hot whey','This heat exchanger is in modern plants > state of the art and can save a large amount of energy demand for milk > heating \n\n\n\n\n\n\n\n\n\n\n\n\n'),(40,'Reverse osmosis/filtration prior > to thermal evaporation techniques (such as vapour compression)','A > mechanical concentration step of the whey reduces necessary thermal energy > demang (or electrial for mechanical vapour compression) in the subsequent > process step. \n\n\n\n\n\n\n\n\n\n\n\n\n'),(41,'Reuse of waste condensate > streams','Reuse of waste condensate streams either directly if possible (in > the lye of the CIP system) or via heat exchanger for heating process water > (wash water in fementation, manual cleaning water > etc.)\n\n\n\n\n\n\n\n\n\n\n\n\n\n'),(42,'Use of waste heat streams from > washing processes','Use of waste heat streams from washing processes e.g. > vapours of sterilization processes for water pre-heating, use of heat from > the spray lye in the main lye bath in bucket washing system. > \n\n\n\n\n\n\n\n\n\n\n\n\n\n'),(43,'Use of waste heat from cooling machines > and compressors','High potential if a low temperature heat demand > exists\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'),(44,'Homogenisation a branch > current','Homogenising only one branch of the total process streams can save > up to 60% of energy. Applied for milk and cream > homogenisation.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'),(45,'Closed, self cleaning > seperators of cream','Combined closed systems for taking out the cream and > cleaning\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'),(46,'Ohmic heating using the > product as resistance','Ohmic heating using the product as > resistance\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'),(74,'UHT treatment for milk > sterilization','Indirect units, where no direct contact between steam and > milk is established, can recover more waste heat (88-90%) than direct > operation modes (44-50%)\n'),(51,'Off peak cooling and night > over-chilling','Reduction of energy costs through re-arrangement of cooling > hours\n\n\n\n'),(52,'Pre-cooling grapes with chilled water','Pre-cooling > grapes prior to must chilling reduces peak load on the refrigeration > plant\n\n\n\n'),(53,'Evaporative cooling or chilled water to control > fermentation','Fermentation could be controlled by chilled water at 4-6°C; > evaporative condensers can also provide low enough temperatures to prevent > wild fermentation prior to controlled fermentation.\n\n\n\n\n'),(54,'Thermal > storage','During night temperature could be pulled down to the allowable > band, decreasing daytime refrigeration demand by allowing wine temperature > to rise to the top of the allowable band by the late afternoon. Advantage: > running at lower temperature during the night enhances condenser > efficiency.\n\n\n\n\n'),(58,'Centrifuge driven separation methods',' > Replacing cold settling by mechanical alternatives such as centrifuge driven > separation methods can significantly reduce the load on the refrigeration > plant.\n\n\n'),(57,'product-product heat exchange','Large wineries practice > heat exchange into and out of cold vessels - especially vauable when > advoiding switch in another compressor to handle cold stabilisation - heat > recovery efficiency ~80%. Larger volumes improve effectiveness of heat > exchange\n\n\n'),(59,'Heating of juice using solar hot water','Use of solar > heat (in combination with waste heat from compressors) for heating juice > imported to site from tankers\n\n\n\n'),(60,'Cross flow filters instead of > centrifuge','Stainless steel and titanium metallic membranes are robust and > have self cleaning properties; final separation can be done via decanters or > belt press. Energy savings compared to centrifuges up to > 50%.\n\n\n\n'),(61,'Internal recycling of water and chemicals','Internal > recycling of water and chemicals\n\n\n\n\n'),(62,'Dry cleaning','Dry > cleaning prior to wet cleaning saves water and energy > costs\n\n\n\n\n\n'),(63,'Catchpots','Catchpots prevent solid material > entering the waste water flow while cleaning, reduced water > contamination\n\n\n\n\n\n\n'),(64,'Pre-soaking','Loosen the dirt and > subsequent easier cleaning; reduced water and energy > demand\n\n\n\n\n\n\n\n'),(65,'Using metered water dispensers and/or high > pressure low volume (HPLV) sprays for cleaning trucks','Used in the wine > industry: leads to reduced water consumption for truck > cleaning\n\n\n\n\n\n\n\n'),(66,'Volume based control on rinsing in CIP > systems','Volume based control can save more energy than time based control > system\n\n\n\n\n\n\n'),(67,'Nozzle optimisation and maintainance','Nozzle > optimisation and maintainance\n\n\n\n\n\n\n'),(68,'Pre-soaking','Floors and > other equipment can be pre-soaked to loosen hardened of burnt-on dirt befor > wet cleaning\n\n\n\n\n\n'),(69,'Vapour recompression','Additional energy can > be saved by recompressing the vapour using a thermal vapour recompressor > (TVR) or a mechanical vapour recompressor (MVR).\n\n\n\n\n'),(70,'Regular > cleaning','During processing, product compounds gradually deposit on the > heat-exchange surfaces. This can affect the efficiency of the heat-exchange > and lead to heat losses in the system. These deposits may be inorganic or > organic, depending on the product. The installation must, therefore, be > cleaned at regular intervals to prevent too high a heat loss occurring with > a subsequent loss of product quality\n\n\n\n\n\n'),(71,'High efficiency > pumps','High efficiency pumps, VS drives'),(72,'Mechanical vapour > compression for evaporation in whey drying','Mechanical vapour compression > is now seen as best available, as it further reduces energy, especially > themal energy consumption. The reduction reaches a demand that is only 1/5 > of the primary energy demand for thermal vapour compression. > \n'),(73,'Thermal multi-stage vapour compression for evaporation in whey > drying','Generally in multistage compression system reduces steam demand > considerable (1 stage - 100%, 2 stage = 33%). \n\n'); > /*!40000 ALTER TABLE `poefficiencymeasure` ENABLE KEYS */; > UNLOCK TABLES; > > -- > -- Table structure for table `poemlist` > -- > > DROP TABLE IF EXISTS `poemlist`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `poemlist` ( > `IDEMList` int(11) NOT NULL AUTO_INCREMENT, > `SubsectorID` int(11) NOT NULL, > `UnitOperationID` int(11) NOT NULL, > `TechnologyID` int(11) NOT NULL, > `TypicalProcessID` int(11) NOT NULL, > PRIMARY KEY (`IDEMList`) > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `poemlist` > -- > > LOCK TABLES `poemlist` WRITE; > /*!40000 ALTER TABLE `poemlist` DISABLE KEYS */; > INSERT INTO `poemlist` VALUES > (22,19,4,10,9),(23,19,4,10,10),(24,19,4,10,11),(42,19,15,10,42),(41,19,14,10,40),(40,19,12,10,37),(39,19,11,10,32),(34,19,5,10,75),(38,19,10,10,29),(37,19,9,10,28),(36,19,8,10,27),(35,19,6,10,23),(43,20,4,10,9),(44,20,4,10,10),(45,20,4,10,11),(46,20,6,10,23),(47,20,8,10,27),(48,20,9,10,28),(49,20,10,10,29),(50,20,11,10,32),(51,20,12,10,37),(52,20,14,10,40),(53,20,15,10,42),(54,21,4,10,9),(55,21,4,10,10),(56,21,4,10,11),(57,21,5,10,75),(58,21,6,10,23),(59,21,7,10,26),(60,21,8,10,27),(61,21,9,10,28),(62,21,10,10,29),(63,21,11,10,30),(64,21,11,10,31),(65,21,12,10,37),(66,21,14,10,40),(67,21,15,10,42),(68,21,15,10,43),(69,21,17,10,46),(70,23,4,10,9),(71,23,4,10,10),(72,23,4,10,11),(73,23,5,10,75),(74,23,6,10,23),(75,23,6,10,24),(76,23,6,10,25),(77,23,12,10,37),(78,23,10,10,29),(79,23,15,10,42),(80,23,16,10,45),(81,23,17,10,46),(82,23,18,10,47),(83,30,4,10,9),(84,30,4,10,11),(85,30,5,10,75),(86,30,8,10,27),(87,30,9,10,28),(88,30,11,10,30),(89,30,12,10,37),(90,30,14,10,40),(91,30,15,10,42),(92,30,15,10,43),(93,30,16,10,45),(94,24,4,10,10),(95,24,4,10,11),(96,24,5,10,75),(97,24,6,10,23),(98,24,6,10,24),(99,24,7,10,26),(100,24,8,10,27),(101,24,9,10,28),(102,24,10,10,29),(103,24,12,10,37),(104,24,13,10,39),(105,24,15,10,42),(106,25,4,10,10),(107,25,4,10,11),(108,25,5,10,75),(109,25,6,10,23),(110,25,12,10,37),(111,25,13,10,39),(112,25,15,10,42),(113,25,17,10,46),(114,26,4,10,11),(115,26,5,10,75),(116,26,6,10,23),(117,26,6,10,25),(118,26,10,10,29),(119,26,11,10,31),(120,26,12,10,37),(121,26,13,10,39),(122,26,15,10,42),(123,26,16,10,45),(124,26,17,10,46),(125,27,4,10,9),(126,27,4,10,10),(127,27,4,10,11),(128,27,6,10,23),(129,27,6,10,24),(130,27,8,10,27),(131,27,9,10,28),(132,27,10,10,29),(133,27,11,10,31),(134,27,12,10,37),(135,27,13,10,39),(136,27,14,10,40),(138,27,15,10,42),(139,27,15,10,43),(140,27,15,10,44),(141,27,16,10,45),(142,27,17,10,46),(143,28,4,10,9),(144,28,4,10,11),(145,28,8,10,27),(146,28,10,10,29),(147,28,15,10,42),(148,23,8,11,27),(149,19,8,11,27),(150,20,8,11,27),(151,30,8,11,27),(152,24,8,11,27),(153,27,8,11,27),(154,28,8,11,27),(155,19,8,12,27),(156,20,8,12,27),(157,30,8,12,27),(158,27,8,12,27),(159,28,8,12,27),(165,21,8,14,27),(161,24,8,13,27),(162,27,8,13,27),(163,28,8,13,27),(164,21,8,13,27),(166,23,8,14,27),(167,30,8,14,27),(168,27,8,14,27),(169,28,8,14,27),(170,27,8,15,27),(171,28,8,15,27),(172,28,9,16,28),(173,28,9,17,28),(174,28,10,18,29),(175,28,10,19,29),(176,28,10,20,29),(177,28,10,21,29),(178,28,10,22,29),(179,28,10,23,29),(180,28,11,10,30),(181,28,11,10,31),(182,28,11,24,31),(183,28,15,25,31),(184,28,15,26,31),(186,19,10,27,29),(187,30,5,28,75),(188,30,5,29,75),(189,30,5,30,75),(191,30,8,32,27),(192,30,8,33,27),(193,30,8,34,27),(194,30,8,35,27),(195,30,8,36,27),(196,30,9,37,28),(201,19,4,40,9),(202,19,4,41,9),(208,20,4,41,9),(203,19,4,42,11),(209,20,4,42,11),(207,20,4,40,9),(210,21,4,40,9),(211,21,4,41,9),(212,23,4,39,9),(213,23,4,40,9),(214,23,4,41,9),(215,27,4,39,9),(216,27,4,40,9),(217,27,4,41,9),(218,27,4,42,11),(219,28,4,39,9),(220,28,4,40,9),(221,28,4,41,9),(222,28,4,42,11),(223,30,4,39,9),(224,30,4,40,9),(225,30,4,41,9),(226,30,4,42,11); > /*!40000 ALTER TABLE `poemlist` ENABLE KEYS */; > UNLOCK TABLES; > > > -- > -- Table structure for table `poemlistentry` > -- > > DROP TABLE IF EXISTS `poemlistentry`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `poemlistentry` ( > `EMListID` int(11) NOT NULL, > `EfficiencyMeasureID` int(11) NOT NULL > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `poemlistentry` > -- > > LOCK TABLES `poemlistentry` WRITE; > /*!40000 ALTER TABLE `poemlistentry` DISABLE KEYS */; > INSERT INTO `poemlistentry` VALUES > (143,7),(83,7),(70,7),(125,7),(22,8),(43,8),(54,8),(70,8),(83,8),(143,8),(125,8),(44,8),(55,8),(71,8),(94,8),(106,8),(126,8),(24,9),(45,9),(148,10),(149,10),(150,10),(151,10),(152,10),(153,10),(154,10),(155,11),(156,11),(157,11),(158,11),(159,11),(155,71),(156,71),(157,71),(158,71),(159,71),(155,12),(156,12),(157,12),(127,12),(159,12),(155,13),(156,13),(157,13),(158,13),(159,13),(158,12),(155,14),(156,14),(157,14),(158,14),(159,14),(155,15),(156,15),(157,15),(158,15),(159,15),(155,16),(156,16),(157,16),(158,16),(159,16),(155,17),(156,17),(157,17),(158,17),(159,17),(155,18),(156,18),(158,18),(157,18),(159,18),(155,19),(156,19),(157,19),(158,19),(159,19),(155,20),(156,20),(157,20),(158,20),(159,20),(165,23),(161,22),(162,22),(163,22),(166,23),(167,23),(168,23),(169,23),(146,24),(180,25),(180,26),(181,27),(181,28),(183,29),(184,29),(42,31),(38,32),(34,33),(42,34),(39,35),(38,36),(38,37),(85,38),(88,39),(187,72),(188,73),(189,40),(83,42),(84,42),(91,43),(196,74),(22,61),(43,61),(54,61),(70,61),(83,61),(125,61),(143,61),(24,62),(45,62),(56,62),(95,62),(72,62),(107,62),(114,62),(127,62),(144,62),(84,62),(22,63),(23,63),(24,63),(43,63),(44,63),(45,63),(54,63),(55,63),(56,63),(94,63),(95,63),(70,63),(71,63),(72,63),(106,63),(107,63),(114,63),(125,63),(126,63),(127,63),(143,63),(144,63),(83,63),(84,63),(22,64),(23,64),(24,68),(43,64),(44,64),(45,68),(54,64),(55,64),(56,68),(94,64),(95,68),(70,64),(71,64),(72,68),(106,64),(107,68),(114,68),(125,64),(126,64),(127,68),(143,64),(144,68),(83,64),(84,68),(127,65),(22,66),(24,66),(43,66),(45,66),(70,66),(72,66),(125,66),(127,66),(143,66),(144,66),(83,66),(84,66),(35,69),(35,70),(46,69),(46,70),(58,69),(58,70),(74,69),(74,70),(97,69),(97,70),(128,69),(128,70),(116,69),(117,70),(109,69),(109,70); > /*!40000 ALTER TABLE `poemlistentry` ENABLE KEYS */; > UNLOCK TABLES; > > > -- > -- Table structure for table `posector` > -- > > DROP TABLE IF EXISTS `posector`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `posector` ( > `IDsector` int(11) NOT NULL AUTO_INCREMENT, > `Name` varchar(300) NOT NULL, > `NACE` varchar(20) NOT NULL, > PRIMARY KEY (`IDsector`) > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `posector` > -- > > LOCK TABLES `posector` WRITE; > /*!40000 ALTER TABLE `posector` DISABLE KEYS */; > INSERT INTO `posector` VALUES (15,'MANUFACTURE OF FOOD PRODUCTS AND > BEVERAGES','DA15'); > /*!40000 ALTER TABLE `posector` ENABLE KEYS */; > UNLOCK TABLES; > > -- > -- Table structure for table `posubsector` > -- > > DROP TABLE IF EXISTS `posubsector`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `posubsector` ( > `IDSubsector` int(11) NOT NULL AUTO_INCREMENT, > `SectorID` int(11) NOT NULL, > `Name` varchar(300) NOT NULL, > `NACE` varchar(20) NOT NULL, > PRIMARY KEY (`IDSubsector`) > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `posubsector` > -- > > LOCK TABLES `posubsector` WRITE; > /*!40000 ALTER TABLE `posubsector` DISABLE KEYS */; > INSERT INTO `posubsector` VALUES > (19,15,'Meat','DA151'),(20,15,'Fish','DA152'),(21,15,'Fruits/vegetables/herbs','DA153'),(24,15,'Starch/potatoes/grain > mill products','DA156'),(23,15,'Fats/oils','DA154'),(25,15,'Other food > products - Sugar','DA1583'),(26,15,'Other food products - > Chocolate/cacao/coffee','DA1584'),(27,15,'Beverage - > Wine/beverage','DA1593'),(28,15,'Beverage - Beer','DA1596'),(30,15,'Milk > products','DA155'); > /*!40000 ALTER TABLE `posubsector` ENABLE KEYS */; > UNLOCK TABLES; > > -- > -- Table structure for table `potech` > -- > > DROP TABLE IF EXISTS `potech`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `potech` ( > `IDTechnology` int(11) NOT NULL AUTO_INCREMENT, > `Name` varchar(300) NOT NULL, > `Code` varchar(20) NOT NULL, > PRIMARY KEY (`IDTechnology`) > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `potech` > -- > > LOCK TABLES `potech` WRITE; > /*!40000 ALTER TABLE `potech` DISABLE KEYS */; > INSERT INTO `potech` VALUES (13,'Microwave pasteurization','TE'),(12,'Tunel > pasteurization','TE'),(11,'Flash > pasteurization','TE'),(10,'GENERAL','TE00'),(14,'Mechanical > pasteurization','TE'),(15,'Irridation pasteurization','TE'),(16,'Ultraviolet > radiation for sterilization','TE'),(17,'Microfiltration for sterilization > and clarification','TE'),(18,'Wort boiling with mechanical vapour > recompression','TE'),(19,'Wort boiling with thermal vapour recompression > ','TE'),(20,'Steineker Merlin wort boiling system','TE'),(21,'Brewing at > high specific gravity','TE'),(22,'Low pressure wort boiling','TE'),(23,'Wort > stripping system','TE'),(24,'Immobiled yeast > fermentation','TE'),(25,'One-stage cooling system','TE'),(26,'Two-stage > cooling system','TE'),(27,'Thermal heating of smorking and cooking > chambers','TE'),(28,'Mechanical vapour compression','TE'),(29,'Thermal > multi-stage vapour compression','TE'),(30,'Thermal > evaporation','TE'),(37,'UHT treatment','TE'),(32,'UV > radiation','TE'),(33,'Ohmic heating using the product as > resistance','TE'),(34,'High pressure operation (2000 - 6000 bar and 40 - > 60°C)','TE'),(35,'Ultrasonic treatment','TE'),(36,'Micro wave > heating','TE'),(39,'Multistage bottle cleaning','TE'),(40,'Ultrasonic > cleaning','TE'),(41,'Ozone cleaning','TE'),(42,'Enzyme-based > cleaners','TE'),(43,'Open pans','TE'),(44,'Plate > evaporators','TE'),(45,'Horizontal-tube > Evaporators','TE'),(46,'Vertical-tube Evaporators','TE'),(47,'Evaporation > for Heat-sensitive Liquids','TE'),(48,'Multiple-effect evaporators:','TE'); > /*!40000 ALTER TABLE `potech` ENABLE KEYS */; > UNLOCK TABLES; > > > -- > -- Table structure for table `potypicalprocess` > -- > > DROP TABLE IF EXISTS `potypicalprocess`; > SET @saved_cs_client = @@character_set_client; > SET character_set_client = utf8; > CREATE TABLE `potypicalprocess` ( > `IDTypicalProcess` int(11) NOT NULL AUTO_INCREMENT, > `Name` varchar(300) NOT NULL, > `Code` varchar(20) NOT NULL, > PRIMARY KEY (`IDTypicalProcess`) > ) ENGINE=MyISAM; > SET character_set_client = @saved_cs_client; > > -- > -- Dumping data for table `potypicalprocess` > -- > > LOCK TABLES `potypicalprocess` WRITE; > /*!40000 ALTER TABLE `potypicalprocess` DISABLE KEYS */; > INSERT INTO `potypicalprocess` VALUES (9,'Cleaning of bottles and > cases','PO0101'),(10,'Washing products','PO0102'),(11,'Cleaning of > production halls and equipments > ','PO0103'),(12,'Electropolishing','PO0104'),(13,'Solven > degreasing','PO0105'),(17,'Pickling','PO0107'),(15,'Aqueous > cleaning','PO0106'),(18,'Etching and > descalling','PO0108'),(19,'Electrolitically assissted pickling, activation > and degreasing','PO0109'),(20,'Metal > stripping','PO0110'),(21,'Rinsing','PO0111'),(75,'Drying','PO0201'),(23,'Evaporation','PO0301'),(24,'Distillation','PO0302'),(25,'Deodorization','PO0303'),(26,'Blanching','PO0401'),(27,'Pasteurization','PO0501'),(28,'Sterilization','PO0601'),(29,'Cooking > and > boiling','PO0701'),(30,'Preheating','PO0801'),(31,'Soaking','PO0802'),(32,'Thawing','PO0803'),(33,'Peeling','PO0804'),(34,'Conditioning','PO0805'),(35,'Pressing','PO0806'),(36,'Heat > pretreatment for hydrogen de-embrittlement','PO0807'),(37,'Boiler feed-water > preheating','PO0901'),(40,'Cooling of production > halls','PO1101'),(39,'Heating of production > halls','PO1001'),(43,'Ageing','PO1202'),(42,'Cooling, chilling an cold > stabilization','PO1201'),(44,'Cooling of process > solution','PO1203'),(45,'Melting','PO1301'),(46,'Extraction','PO1401'),(47,'Bleaching','PO1501'),(48,'Electropainting','PO1601'),(49,'Lacquering','PO1602'),(50,'Colour > anodizing on aluminium','PO1603'),(51,'Metal > colouring','PO1604'),(52,'Plating copper and copper > alloy','PO1701'),(53,'Electroplating nikel','PO1702'),(54,'Plating > chromium','PO1703'),(55,'Plating zinc and zinc alloy','PO1704'),(56,'Plating > cadmium','PO1705'),(57,'Plating tin and alloy','PO1706'),(58,'Plating > precious metals','PO1707'),(59,'Autocatalytic > plating','PO1708'),(60,'Immersion > coatings','PO1709'),(61,'Oiling','PO1710'),(62,'Anodizing','PO1711'),(63,'Sealing > following anodizing','PO1712'),(72,'Drying','PO0201'),(65,'Conversion > coatings (phosphate layer)','PO1713'),(66,'Conversion coatings > (chromium)','PO1714'),(68,'Coating oxide (chemical > blacking)','PO1715'),(70,'Brightening','PO1716'),(71,'Chemical > milling','PO1717'); > /*!40000 ALTER TABLE `potypicalprocess` ENABLE KEYS */; > UNLOCK TABLES; > > > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Einstein-developers mailing list > Ein...@li... > https://lists.sourceforge.net/lists/listinfo/einstein-developers > > -- ******************************************************* University of Rome Sapienza Department of Mechanics and Aeronautics, via Eudossiana 18 – 00184 Rome Tel.: +39 0644585271 – 234 e-mail: cla...@gm... cla...@un... ****************************************************** |
From: Hans S. <han...@en...> - 2008-10-21 09:45:25
|
Dear all, For that the PO Module shows you something, you have to install the po-data (load the file like any other sql-update !!!, but you have to pick the command "USE einstein;" first) Regards, Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Stoyan D. <sto...@en...> - 2008-10-21 09:13:40
|
Dear developers, Claudia: I have a problem with this case in the creation of the ST alternative - a message shows indicating that the mounted surface is quite small although I specified 2000m2 of surface, also latitude 42, etc. Bettina: There seems to be a problem also with the demand curves.A problem was found also in the HP panel - pinch temperature above 200ºC while the supply and the wasete flows are below 100ºC. I am attaching the project, logs and the import - export xml. Best regards, Stoyan -- __________________________ Dr. Stoyan Danov energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Dr. Ullés, 2, 3o 08224 Terrassa (Barcelona), Spain www.energyxperts.net e-mail: sto...@en... tel/fax: +34 93 788 31 10 mobile: +34 635 486 568 home: +34 786 00 83 |
From: Hans S. <han...@en...> - 2008-10-20 15:51:02
|
TCA module - heat exchanger costs: In the Meat Industry example Stoyan is working in I get 220.000 € for a 6 kW and 300.000 kW for a 8 kW heat exchanger. This might be slightly overestimated, isn't it :-) Sunny regards, Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Hans S. <han...@en...> - 2008-10-17 12:48:46
|
Bettina, I think there is a bug in the version You sent, as You change sink in source and then source in sink again ... Onby a cleaned-up version respecting your order ... Hans Slawitsch, Bettina wrote: >Hans, > >In the my database version it is >1. StreamStatusSource >2. StreamStatusSink > >This is also the order in the exportHr.py and importHR.py. > >So again a new update 040!!! >It will work with the old one as well, because the two parameters have the same kind, but to be really correct we should change it. > >Bettina > > >-----Ursprüngliche Nachricht----- >Von: Hans Schweiger [mailto:han...@en...] >Gesendet: Freitag, 17. Oktober 2008 12:19 >An: EINSTEIN-developers >Betreff: [Einstein-developers] update040 > >Dear all, > >Please run again the update040 (the attached version) - not yet uploaded !!!! > >Bettina: >Please check - in some dump we received of your version you have the order changed of sink and source .... > >-- >__________________________ >Dr. Hans Schweiger > >energyXperts.BCN > >Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies > >Creu dels Molers, 15, 2o 1a >08004 Barcelona (Spain) > >www.energyxperts.net > >e-mail: han...@en... >tel/fax: +34 934 415 395 >mobile: +34 697 267 280 > > > > > > >------------------------------------------------------------------------ > >-- update einstein database: 15.10.2008 >USE einstein; > >ALTER TABLE qheatexchanger DROP COLUMN StreamStatus; >ALTER TABLE qheatexchanger DROP COLUMN StreamType; > >ALTER TABLE qheatexchanger CHANGE COLUMN StreamStatusSource StreamStatusSink VARCHAR(200) AFTER StorageSize; >ALTER TABLE qheatexchanger CHANGE COLUMN StreamStatusSink StreamStatusSource VARCHAR(200) AFTER StreamStatusSource; >ALTER TABLE qheatexchanger CHANGE COLUMN StreamTypeSink StreamTypeSink VARCHAR(200) AFTER StreamStatusSource; >ALTER TABLE qheatexchanger CHANGE COLUMN StreamTypeSource StreamTypeSource VARCHAR(200) AFTER StreamTypeSink; > > > > > > > > > > > > -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Slawitsch, B. <Bet...@jo...> - 2008-10-17 12:37:10
|
Last version of PE2 for the first release today. If storages are implemented operating hours of HX are set approximately to QHX/QDotHX. Stream operating hours are not exactly fitting to the balacne, but unfortunately I cannot find the perfect solution for this today. Sunny regards, bettina -----Ursprüngliche Nachricht----- Von: Hans Schweiger [mailto:han...@en...] Gesendet: Freitag, 17. Oktober 2008 13:37 An: Slawitsch, Bettina Cc: EINSTEIN-developers Betreff: Re: AW: [Einstein-developers] update040 Bettina, I think there is a bug in the version You sent, as You change sink in source and then source in sink again ... Onby a cleaned-up version respecting your order ... Hans Slawitsch, Bettina wrote: >Hans, > >In the my database version it is >1. StreamStatusSource >2. StreamStatusSink > >This is also the order in the exportHr.py and importHR.py. > >So again a new update 040!!! >It will work with the old one as well, because the two parameters have the same kind, but to be really correct we should change it. > >Bettina > > >-----Ursprüngliche Nachricht----- >Von: Hans Schweiger [mailto:han...@en...] >Gesendet: Freitag, 17. Oktober 2008 12:19 >An: EINSTEIN-developers >Betreff: [Einstein-developers] update040 > >Dear all, > >Please run again the update040 (the attached version) - not yet uploaded !!!! > >Bettina: >Please check - in some dump we received of your version you have the order changed of sink and source .... > >-- >__________________________ >Dr. Hans Schweiger > >energyXperts.BCN > >Ingeniería Termo-energética y Energías Renovables Thermo-energetical >Engineering and Renewable Energies > >Creu dels Molers, 15, 2o 1a >08004 Barcelona (Spain) > >www.energyxperts.net > >e-mail: han...@en... >tel/fax: +34 934 415 395 >mobile: +34 697 267 280 > > > > > > >----------------------------------------------------------------------- >- > >-- update einstein database: 15.10.2008 USE einstein; > >ALTER TABLE qheatexchanger DROP COLUMN StreamStatus; ALTER TABLE >qheatexchanger DROP COLUMN StreamType; > >ALTER TABLE qheatexchanger CHANGE COLUMN StreamStatusSource >StreamStatusSink VARCHAR(200) AFTER StorageSize; ALTER TABLE >qheatexchanger CHANGE COLUMN StreamStatusSink StreamStatusSource >VARCHAR(200) AFTER StreamStatusSource; ALTER TABLE qheatexchanger >CHANGE COLUMN StreamTypeSink StreamTypeSink VARCHAR(200) AFTER >StreamStatusSource; ALTER TABLE qheatexchanger CHANGE COLUMN >StreamTypeSource StreamTypeSource VARCHAR(200) AFTER StreamTypeSink; > > > > > > > > > > > > -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Slawitsch, B. <Bet...@jo...> - 2008-10-17 10:40:17
|
Hans, In the my database version it is 1. StreamStatusSource 2. StreamStatusSink This is also the order in the exportHr.py and importHR.py. So again a new update 040!!! It will work with the old one as well, because the two parameters have the same kind, but to be really correct we should change it. Bettina -----Ursprüngliche Nachricht----- Von: Hans Schweiger [mailto:han...@en...] Gesendet: Freitag, 17. Oktober 2008 12:19 An: EINSTEIN-developers Betreff: [Einstein-developers] update040 Dear all, Please run again the update040 (the attached version) - not yet uploaded !!!! Bettina: Please check - in some dump we received of your version you have the order changed of sink and source .... -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Hans S. <han...@en...> - 2008-10-17 10:19:11
|
Dear all, Please run again the update040 (the attached version) - not yet uploaded !!!! Bettina: Please check - in some dump we received of your version you have the order changed of sink and source .... -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |
From: Hans S. <han...@en...> - 2008-10-17 08:31:09
|
Everybody who works with the tool this morning, please use the last update on SVN in order to discover possible last-minute bugs. Stoyan, test also the PE2 HR calculation mode: it should work well if You define ALL the fuel parameters (some of which now still are set to None) !!! (find attached my data for natural gas) Hans -- __________________________ Dr. Hans Schweiger energyXperts.BCN Ingeniería Termo-energética y Energías Renovables Thermo-energetical Engineering and Renewable Energies Creu dels Molers, 15, 2o 1a 08004 Barcelona (Spain) www.energyxperts.net e-mail: han...@en... tel/fax: +34 934 415 395 mobile: +34 697 267 280 |