Mathematical Models Description


"Reciprocating compressor" description

Conditions:
1. hRfrOut = hRfrIn+(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen(rpOutIn,tDPOut)
                                                  *(1-rwLoss)*rwIn(rmRfr)/rmRfr
2. wIn = mRfr*(hRfrOut-hRfrIn)/(1-rwLoss)
3. mRfr = vDisp*rEffVol(rpOutIn,tDPOut)/R_VgasTP(tRfrIn,pRfrIn)*rmRfr
hRfrOut is calculated in detail by:
pRfrIn    = R_PsatgasT(tDPIn)
pRfrOut   = R_PsatgasT(tDPOut)
rpOutIn   = pRfrOut/pRfrIn
rEffIsen  = rEffIsen(rpOutIn,tDPOut)
rwIn      = rwIn(rmRfr)
tRfrIn    = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn    = R_SgasTP(tRfrIn,pRfrIn)
hRfrOut   = hRfrIn+(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen*(1-rwLoss)*rwIn/rmRfr
Linearizes dh = hRfrOut - hRfrIn with respect to tDPIn and tDPOut:
dh(tDPIn,tDPOut) = A_dh + B_dh * tDPIn + C_dh * tDPOut
Equations:
1. B_dh *tDPIn +C_dh *tDPOut + hRfrIn  - hRfrOut = -A_dh
2. mRfr *hRfrIn -mRfr *hRfrOut +(1-rwLoss) *wIn = 0
3. mRfr = vDisp*rEffVol/R_VgasTP(tRfrIn,pRfrIn)*rmRfr
If rmRfr = 0:
1. hRfrIn - hRfrOut = 0
Relations:
1. rmRfr = rmRfr<+(iStep-1)/(nStep-1)*(1-rmRfr<)
2. qRfr  = wIn*(1-rwLoss)
3. iStep = iStep(current)

"Cooled reciprocating compressor" description

Conditions:
1. mRfr*hRfrIn + mSec*cpSec*tSecIn + wIn = mRfr*hRfrOut + mSec*cpSec*tSecOut
2. wIn = mRfr*(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen(rpOutIn,tDPOut)
                                            *rwIn(rmRfr,rpOutIn)/rmRfr
3. mSec*cpSec*(tSecOut-tSecIn) = wIn*rwLoss(rmRfr,rpOutIn)
4. mRfr = vDisp*rEffVol(rpOutIn,tDPOut)/R_VgasTP(tRfrIn,pRfrIn)*rmRfr
pRfrIn    = R_PsatgasT(tDPIn)
pRfrOut   = R_PsatgasT(tDPOut)
rpOutIn   = pRfrOut/pRfrIn
rEffIsen  = rEffIsen(rpOutIn,tDPOut)
tRfrIn    = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn    = R_SgasTP(tRfrIn,pRfrIn)
specWA    = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen*rwIn(rpOutIn,rmRfr)/rmRfr
specW = wIn/mRfr is linearised to A_w+B_w*tDPIn+C_w*tDPOut
mSec*cpSec*(tSecOut-tSecIn) = q = wIn*rwLoss(rmRfr,rpOutIn)
Equations:
1. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut + wIn = 0
2. mRfr*B_w *tDPIn +mRfr*C_w *tDPOut - wIn = -mRfr*A_w
3. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +rwLoss *wIn = 0
4. mRfr = vDisp*rEffVol(rpOutIn,tDPOut)/R_VgasTP(tRfrIn,pRfrIn)*rmRfr
If rmRfr = 0:
1. hRfrIn - hRfrOut = 0
3. tSecIn - tSecOut = 0
If mSec = 0:
3. tSecIn = tSecIn(previous)
Relations:
1. rmRfr = rmRfr<+(iStep-1)/(nStep-1)*(1-rmRfr<)
2. q     = mSec*cpSec*(tSecOut-tSecIn)
3. qRfr  = mRfr*(hRfrOut-hRfrIn)

"Speed controlled compressor" description

This is a compressor with a capacity that can be controlled through the parameter nRot.
Conditions:
1. hRfrOut = hRfrIn+(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen(rpOutIn,nRot)*(1-rwLoss)
2. wIn = mRfr*(hRfrOut-hRfrIn)/(1-rwLoss)
3. mRfr = volDisp*nRot*rEffVol(rpOutIn,nRot)/R_VgasTP(tRfrIn,pRfrIn)
hRfrOut is calculated in detail by:

pRfrIn    = R_PsatgasT(tDPIn)
pRfrOut   = R_PsatgasT(tDPOut)
rpOutIn   = pRfrOut/pRfrIn
rEffIsen  = rEffIsen(rpOutIn,nRot)
rwLoss    = rwLoss(rpOutIn,nRot)
tRfrIn    = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn    = R_SgasTP(tRfrIn,pRfrIn)
hRfrOut   = hRfrIn+(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen*(1-rwLoss)
Linearizes dh = hRfrOut - hRfrIn with respect to tDPIn and tDPOut:
dh(tDPIn,tDPOut) = A_dh + B_dh * tDPIn + C_dh * tDPOut
Equations:
1. B_dh *tDPIn +C_dh *tDPOut + hRfrIn  - hRfrOut = -A_dh
2. mRfr *hRfrIn -mRfr *hRfrOut +(1-rwLoss) *wIn = 0
3. mRfr = volDisp*nRot*rEffVol/R_VgasTP(tRfrIn,pRfrIn)
If nRot = 0:
1. hRfrIn - hRfrOut = 0
Relations:
1. nRot = nRotMn+(iStep-1)/(nStep-1)*(nRotMx-nRotMn)
2. qRfr  = wIn*(1-rwLoss)
3. iStep = iStep(current)

"Cooled speed controlled compressor" description

This is a compressor with a capacity that can be controlled through the parameter nRot.
Is is cooled through heat transfer with a secondary fluid flow.
Conditions:
1. mRfr*hRfrIn + mSec*cpSec*tSecIn + wIn = mRfr*hRfrOut + mSec*cpSec*tSecOut
2. wIn = mRfr*(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen(rpOutIn,nRot)
3. mSec*cpSec*(tSecOut-tSecIn) = wIn*rwLoss(rpOutIn,nRot)
4. mRfr = volDisp*nRot*rEffVol(rpOutIn,nRot)/R_VgasTP(tRfrIn,pRfrIn)
Specific shaft power specW = wIn/mRfr is calculated as follows:

pRfrIn    = R_PsatgasT(tDPIn)
pRfrOut   = R_PsatgasT(tDPOut)
rpOutIn   = pRfrOut/pRfrIn
rEffIsen  = rEffIsen(rpOutIn,nRot)
tRfrIn    = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn    = R_SgasTP(tRfrIn,pRfrIn)
specW     = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen
Linearization:
specW = A_w+B_w*tDPIn+C_w*tDPOut
Equations:
1. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut + wIn = 0
2. mRfr*C1 *tDPIn +mRfr*C2 *tDPOut - wIn = -mRfr*C3
3. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +rwLoss *wIn = 0
4. mRfr = volDisp*nRot*rEffVol(rpOutIn,tDPOut)/R_VgasTP(tRfrIn,pRfrIn)
If nRot = 0:
1. hRfrIn - hRfrOut = 0
3. tSecIn - tSecOut = 0
If mSec = 0:
3. tSecIn = tSecIn(previous)
Relations:
1. nRot = nRotMn+(iStep-1)/(nStep-1)*(nRotMx-nRotMn)
2. q    = mSec*cpSec*(tSecOut-tSecIn)
3. qRfr = mRfr*(hRfrOut-hRfrIn)

"Screw compressor" description

Assumption: tRfrOut = tOilOut
Conditions:
1. mRfr*hRfrIn + wIn*(1-rwLoss) + mOil*cpOil*tOilIn
   = mRfr*hRfrOut + mOil*cpOil*tOilOut
2. wIn = mRfr*(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen(rpOutIn,tDPOut)
         *rwIn(rmRfr)/rmRfr
3. tOilOut = tRfrOut = R_TgasHP(hRfrOut,pRfrOut)
4. mRfr = vDisp*rEffVol(rpOutIn,tDPOut)*rmRfr/R_VgasTP(tRfrIn,pRfrIn)
specW = wIn/mRfr is calculated as follows:

pRfrIn   = R_PsatgasT(tDPIn)
pRfrOut  = R_PsatgasT(tDPOut)
rpOutIn  = pRfrOut/pRfrIn
rEffIsen = rEffIsen(rpOutIn,tDPOut)
tRfrIn   = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn   = R_SgasTP(tRfrIn,pRfrIn)
specW  = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEffIsen*rwIn(rpOutIn,rmRfr)/rmRfr
specW(tDPIn,tDPOut) is linearised to A_w + B_w*tDPIn+C_w*tDPOut
Linearizes hRfrOut = R_HgasTP(tOilOut,R_PsatgasT(tDPOut)) = A_h + B_h*tOilOut+C_h*tDPOut
Equations:
1. mcpOil *tOilIn -mcpOil *tOilOut +mRfr *hRfrIn -mRfr *hRfrOut +(1-rwLoss) *wIn = 0
2. mRfr*b_w *tDPIn +mRfr*C_w *tDPOut - wIn = -mRfr*A_w
3. C_h *tDPOut +B_h *tOilOut - hRfrOut = -A_h
4. mRfr = vDisp*rEffVol(rpOutIn,tDPOut)*rmRfr/R_VgasTP(tRfrIn,pRfrIn)
If rmRfr = 0:
1. hRfrIn - hRfrOut = 0
2. wIn = 0
3. tOilIn - tOilOut = 0
Relations:
1. rmRfr  = rmRfr<+(iStep-1)/(nStep-1)*(1-rmRfr<)
2. mcpOil = mOil*cpOil
3. qOil   = mcpOil*(tOilOut-tOilIn)
4. qRfr   = wIn*(1-rwLoss)-qOil

"Screw compressor with economizer port" description

Conditions:
1. mRfrIn*hRfrIn + mRfrEco*hRfrEco + wIn*(1-rwLoss) + mOil*cpOil*tOilIn
     = mRfrOut*hRfrOut +mOil*cpOil*tOilOut
2. wIn = mRfrIn*(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)*(1/rEffIsen(rpOutIn,tDPOut)+dra)
         *rwIn(rmRfr)/rmRfr
3. tOilOut = tRfrOut = R_TgasHP(hRfrOut,pRfrOut)
4. mRfrIn = vDisp*rEffVol(rpOutIn,tDPOut)*rmRfr/R_VgasTP(tRfrIn,pRfrIn)
5. mRfrEco*(tRfrEco+t0->K)/pInt = mRfrIn*(tRfrIn+t0->K)/pRfrIn
                            *(1/rVolEco-(pRfrIn/pInt)**(1/rPoly))
6. mRfrOut = mRfrIn + mRfrEco
with t0->K = 273.15
wIn/mRfrIn = specW is calculated as follows:

pRfrIn   = R_PsatgasT(tDPIn)
pInt     = R_PsatgasT(tDPInt)
pRfrOut  = R_PsatgasT(tDPOut)
rpOutIn  = pRfrOut/pRfrIn
tIntIn   = pRfrIn*rVolE**rPoly
rEffIsen = rEffIsen(rpOutIn,tDPOut)
tRfrIn   = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn   = R_SgasTP(tRfrIn,pRfrIn)
fPoly    = 1/rPoly
cPoly    = 1-fPoly
wIn      = pRfrIn*vRfr/r*((pRfrOut/pRfrIn)**r-1)
wOut     = pRfrIn*vRfr/r*((pIntIn/pRfrIn)**r-1) + vRfr*(pRfrIn/pIntIn)**s*(pInt-pIntIn)
           + pInt*vRfr/r*(pRfrIn/pIntIn)**s*((pRfrOut/pInt)**r-1)
specW    = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)*(1/rEffIsen(rpOutIn,tDPOut)+wOut/wIn-1)
            *rwIn(rmRfr)/rmRfr
Linearizing:
specW = A_w + B_w*tDPIn+C_w*tDPEco+D_w*tDPOut
Also linearizing:
hRfrOut = R_HgasTP(tOilOut,pRfrOut) = A_h + B_h*tOilOut+C_h*tDPOut
Equations:
1. mcpOil *tOilIn -mcpOil *tOilOut +mRfrIn *hRfrIn +mRfrEco *hEco -mRfrOut *hRfrOut
     +(1-rwLoss) *wIn = 0
2. mRfrIn*B_w *tDPIn +mRfrIn*C_w *tDPEco +mRfrIn*D_w *tDPOut - wIn = -mRfrIn*A_w
3. C_h *tDPOut +B_h*tOilOut - hRfrOut = -A_h
4. mRfrIn = vDisp*rEffVol(rpOutIn,tDPOut)*rmRfr/R_VgasTP(tRfrIn,pRfrIn)
5. (tRfrIn+273.15)/pRfrIn*(1/rVolEco-(pRfrIn/pInt)**(1/rPoly)) *mRfrIn
   -(tEco+273.15)/pInt *mRfrEco = 0
6. mRfrIn + mRfrEco - mRfrOut = 0
If rmRfr = 0:
1. hRfrIn - hRfrOut = 0
2. wIn = 0
3. tOilIn - tOilOut = 0
Relations:
1. rmRfr  = rmRfr<+(iStep-1)/(nStep-1)*(1-rmRfr<)
2. mcpOil = mOil*cpOil
3. qOil   = mcpOil*(tOilOut-tOilIn)
4. qRfr   = wIn*(1-rwLoss)-qOil

"Turbo compressor" description

Assumption of no heat loss.
Conditions:
1. hRfrOut = hRfrIn + (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEff
2. wIn     = mRfr*(hRfrOut-hRfrIn)
3. mRfr    = vRfr/R_VgasTP(tRfrIn,pRfrIn)
dhRfr = specW = wIn/mRfr calculated as follows:

pRfrIn  = R_PsatgasT(tDPIn)
pRfrOut = R_PsatgasT(tDPOut)
rpOutIn = pRfrOut/pRfrIn
rrPr    = rpOutIn/rPrNom
tRfrIn  = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn  = R_SgasTP(tRfrIn,pRfrIn)
rEff    = rEffNom*rEff(rrPr,angPre)
specW   = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEff
Linearizes:
specW = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEff = A_w + B_w*tDPIn + C_w*tDPOut
Equations:
1. B_w *tDPIn +C_w *tDPOut + hRfrIn - hRfrOut = -A_w
2. mRfr *hRfrIn -mRfr *hRfrOut + wIn = 0
3. mRfr = vRfr/R_VgasTP(tRfrIn,pRfrIn)
If angPre = 0:
1. hRfrIn - hRfrOut = 0
Relations:
1. vRfr = vRfrNom*rvRfr(rrPr,angPre)
2. qRfr = mRfr*(hRfrOut-hRfrIn)
3. wIn  = qRfr

"Cooled turbo compressor" description

Conditions:
1. mRfr*hRfrIn + mSec*cpSec*tSecIn + wIn = mRfr*hRfrOut + mSec*cpSec*tSecOut
2. wIn = mRfr*(R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEff
3. mSec*cpSec*(tSecOut-tSecIn) = wIn*rwLoss(angPre,rpOutIn)
4. mRfr = vRfr/R_VgasTP(tRfrIn,pRfrIn)
specW = wIn/mRfr calculated as follows:

pRfrIn  = R_PsatgasT(tDPIn)
pRfrOut = R_PsatgasT(tDPOut)
rpOutIn = pRfrOut/pRfrIn
rrPr    = rpOutIn/rPrNom
tRfrIn  = R_TgasHP(hRfrIn,pRfrIn)
sRfrIn  = R_SgasTP(tRfrIn,pRfrIn)
rEff    = rEffNom*rEff(rrPr,angPre)
specW   = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEff
Linearizes:
specW = wIn/mRfr = (R_HgasSP(sRfrIn,pRfrOut)-hRfrIn)/rEff = A_w + B_w*tDPIn+C_w*tDPOut
3. mSec*cpSec*(tSecOut-tSecIn) = q = wIn*rwLoss(rmRfr,rrpOutIn) = mRfr*specW*rwLoss
specQ = q/mRfr = specW*rwLoss(rmRfr,pRfrOut/(pRfrIn*rPNom))
Linearizes specQ =  A_q + B_q*pRfrIn+C_q*pRfrOut
Equations:
1. mSec*cpSec *tSecIn - mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut + wIn = 0
2. mRfr*B_w *tDPIn +mRfr*C_w *tDPOut - wIn = -mRfr*A_w
3. mRfr*B_q *tDPIn +mRfr*C_q *tDPOut +mSec*cpSec *tSecIn -mSec*cpSec *tSecOut = -mRfr*A_q
4. mRfr = vRfr/R_VgasTP(tRfrIn,pRfrIn)
If angPre = 0:
1. hRfrIn - hRfrOut = 0
2. wIn = 0
3. tSecIn - tSecOut = 0
If mSec = 0:
3. tSecIn = tSecIn(previous)
Relations:
1. vRfr   = vRfrNom*rvRfr(rrPr,angPre)
2. qRfr   = mRfr*(hRfrOut-hRfrIn)
3. q      = mSec*cpSec*(tSecOut-tSecIn)
4. tSecAv = 0.5*(tSecIn+tSecOut)

"Pump with preset mass flow rate" description

Equation: If turned on ('+'):
1. mSec = mSec+
If turned off ('-'):
1. mSec = 0

"Pump with preset mass flow rate and heat produced" description

Conditions when on:
1. q = mSec*cpSec*(tSecOut-tSecIn)
2. mSec = mSec+
Equations: If on ('+'):
1. -mSec*cpSec *tSecIn +mSec*cpSec *tSecOut = q
2. mSec = mSec+
If off ('-'):
1. tSecIn - tSecOut = 0
2. mSec = 0

"Pump with given characteristics" description

Conditions:
1. q = vSec*dp(vSec,nRot)/rEff(vSec,nRot) = mSec*cp*(tSecOut-tSecIn)
2. pRfrOut - pRfrIn = dp(vSec,nRot)
Linearizes:
dp(vSec,nRot) = C1*vSec + C2
with:
C1 = (dp(vSec+dv)-dp(vSec))/dv
C2 = dp(vSec) - C1*vSec
with dv = 0.01*vSec and vSec = mSec/densSec
Equations:
1. -cpSec *tSecIn +cpSec *tSecOut = dp/(densSec*rEff)
2. - pRfrIn + pRfrOut -C1/densSec *mSec = C2
If nRot = 0:
1. tSecIn - tSecOut = 0
2. mSec = 0
Relations:
1. wIn = q/rwLoss
Comment: It is important to give vSec a good initial value to enter the characteristic properly. Note that for capacity control the state should normally be set to "Maximum" in stead of "On" to turn on the pump.

"Refrigerant pump" description

Equation: If state is on ('+'):
1. mRfr = mRfr+
If state is off ('-'):
1. mRfr = 0

"Speed controlled refrigerant pump" description

Conditions:
1. q = vRfr*dp(vRfr,nRot)/rEff(vRfr,nRot) = mRfr*(hRfrOut-hRfrIn)
2. pRfrOut - pRfrIn = dp(vRfr,nRot)
Linearizes:
dp(vRfr,nRot) = C1*vRfr + C2
with:
C1 = (dp(vRfr+dv)-dp(vRfr))/dv
C2 = dp(vRfr) - C1*vRfr
with dv = 0.01*vRfr and vRfr = mRfr/densRfr
Equations:
1. -cpRfr *tRfrIn +cpRfr *tRfrOut = dp/(densRfr*rEff)
2. - pRfrIn + pRfrOut -C1/densRfr *mRfr = C2
If nRot = 0:
1. tDPIn - tDPOut = 0
2. mRfr = 0
Relations:
1. wIn = q/rwLoss
Comment: It is important to give vRfr a good initial value to enter the characteristic properly. Note that for capacity control the state should normally be set to "Maximum" in stead of "On" to turn on the pump.

"Standard motor" description

Conditions:
1. wOut = wIn*rEff
Equation:
1. rEff *wIn - wOut = 0
Relation:
1. rw = wOut/wNom

"Motor cooled by secondary fluid" description

Conditions:
1. wOut = wIn*rEff
2. mSec*cp*(tSecOut-tSecIn) = (1-rEff)*rwLoss*wIn
Equations:
1. rEff *wIn - wOut = 0
2. -mSec*cpSec *tSecIn +mSec*cpSec *tSecOut +(rEff-1)*rwLoss *wIn = 0
If mSec = 0: If sec. medium is cooled by refrigerant:
1. tSecOut = tSecOut(previous)
If sec. medium is cooled by sec. medium:
1. tSecIn - tSecOut = 0
Relation:
1. rw = wOut/wNom

"Motor cooled by suction gas" description

Conditions:
1. wOut = wIn*rEff
2. mRfr*(hRfrOut-hRfrIn) = (1-rEff)*wIn
Equations:
1. rEff *wIn - wOut = 0
2. -mRfr *hRfrIn +mRfr *hRfrOut +(rEff-1) *wIn = 0
If mRfr = 0:
2. hRfrIn - hRfrOut = 0
Relations:
1. rw = wOut/wNom

"Electrical power line" description

Conditions:
1. wOut = wIn-dwdl_*lCbl
Equations:
1. wIn - wOut = dwdl_*lCbl
Relations:
1. dwdl_ = f(UCbl)

"Standard heat exchanger" description

Conditions:
1. q = ua*(tHiIn-tLoOut-(tHiOut-tLoIn))/ln((tHiIn-tLoOut)/(tHiOut-tLoIn))
2. q = mcpHi*(tHiIn-tHiOut)
3. q = mcpLo*(tLoOut-tLoIn)
Equations: (with R = exp(ua*(1/mcpHi-1/mcpLo))):
1. tHiIn -R *tHiOut +R *tLoIn - tLoOut = 0
2. mcpHi *tHiIn -mcpHi *tHiOut +mcpLo *tLoIn -mcpLo *tLoOut = 0
When mcpHi approaches mcpLo equation 1 will degenerate into equation 2 and then arithmetic mean temperature differences must be used in the heat transfer equation. When abs(R-1) < 0.01 the following is used (with s = ua/(2*mcpHi)):
1. (1-s) *tHiIn -(1+s) *tHiOut + s *tLoIn + s *tLoOut = 0
If mSecHi = 0 or mSecLo = 0: When mSecLo is in a closed circuit (mSecHi arbitrary):
1. tHiIn - tHiOut = 0
2. tHiIn - tLoOut = 0
When mSecHi is in a closed circuit and mSecLo in an open one:
1. tHiOut - tLoIn = 0
2. tLoIn - tLoOut = 0
When both mSecHi and mSecLo is in an open circuit:
1. tHiIn - tHiOut = 0
2. tLoIn - tLoOut = 0
Relations:
1. mcpHi  = mSecHi*cpSecHi(tHiAv)
2. mcpLo  = mSecLo*cpSecLo(tLoAv)
3. ua     = u(mSecHi,mSecLo)*a
4. q      = mcpHi*(tHiIn-tHiOut)
5. tHiAv  = 0.5*(tHiIn+tHiOut)
6. tLoAv  = 0.5*(tLoIn+tLoOut)
7. q_a    = q/a
8. dtLmtd = q/ua

"Accurate heat exchanger" description

This is a model for accurate calculation of normal heat exchangers. It calculates both heat transfer and pressure drop. It must be used with counter flow.

The exchanger is divided into nS number of sections (max: 50). Based upon inlet and outlet conditions for both fluids, the conditions at intersectional points are calculated with an internal iteration accounting for non-linearities. Conditions:

1. q = ua*(tHiIn-tLoOut-(tHiOut-tLoIn))/ln((tHiIn-tLoOut)/(tHiOut-tLoIn))
2. q = mcpHi*(tHiIn-tHiOut)
3. q = mcpLo*(tLoOut-tLoIn)
1. ua*((tHiIn-tLoOut-(tHiOut-tLoIn))/ln((tHiIn-tLoOut)/(tHiOut-tLoIn))
   = mSecLo*cpSecLo*(tLoOut-tLoIn) = q
The ua value is an average value accounting both for varying thermal properties over the heat exchanger and deviations from the ideal exponential shape of the temperature difference. ua is calculated from summing heat transfer contributions dq(iS) from all sections:

q = dq(1) + dq(2) + ... + dq(nS)
dq(iS)   = mSecHi*cpSecHi(iS)*(tHiIn(iS)-tHiOut(iS+1))
         = u(iS)a/nS*(tHiIn(iS)-tLoOut(iS)-(tHiOut(iS+1)-tLoIn(iS+1))
           /ln((tHiIn(iS)-tLoOut(iS))/(tHiOut(iS+1)-tLoIn(iS+1)))
dpHi(iS) = dpdl(mHi,0.5*(tHi(iS-1)+tHi(iS-1)))*lHi/nS
dpLo(iS) = dpdl(mLo,0.5*(tLo(iS-1)+tLo(iS-1)))*lLo/nS
iS         - Section number (Downstream for heat donor, upstream for heat receptor)
tHiIn(iS)  - Heat donor temperature at inlet of section iS
tLoOut(iS) - Heat receptor temperature at outlet of section iS.
u(iS)      - Heat transfer coefficient for section number iS.
ua is then calculated from:

ua = q/((tHiIn-tLoOut-(tHiOut-tLoIn))/ln((tHiIn-tLoOut)/(tHiOut-tLoIn))
R  = exp(ua*(1/(mSecHi*cpSecHi)-1/(mSecLo*cpSecLo)))
These values are calculated from a set of algebraic equations:
R(iS) *tSecLo(iS+1) -tSecLo(iS) + tSecHi(iS) -R *tSecHi(iS+1) = 0, iS = 1,nS
mSecHi*cpSecHi(iS)*(tSecHi(iS)-tSecHi(iS+1)) = mSecLo*cpSecLo(iS)*(tSecLo(iS)-tSecLo(iS+1)), iS = 1,nS
where R(iS) = exp(u(iS)*a/nS*(1/(mSecHi*cpSecHi(iS))-1/(mSecLo*cpSecLo(iS))))
and u(iS)*a = 1/(1/(uHi(iS)*aHi)+1/(uLo(iS)*aLo))
plus:

tSecHi(1)    = tHiIn
tSecLo(nS+1) = tLoIn
2. mRfr*(hRfrIn-hRfrOut) = mSec*cpSec*(tSecOut-tSecIn)
3. pHiIn - pHiOut = dpHi
4. pLoIn - pLoOut = dpLo
Equations:
1. R*cpRfr *tSecIn -cpRfr *tSecOut + hRfrIn -R *hRfrOut = h0Rfr*(1-R)
2. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0
3. pHiIn - pHiOut = dpHi
4. pLoIn - pLoOut = dpLo
Equations: (with R = exp(ua*(1/mcpHi-1/mcpLo))):
1. tHiIn -R *tHiOut +R *tLoIn - tLoOut = 0
2. mcpHi *tHiIn -mcpHi *tHiOut +mcpLo *tLoIn -mcpLo *tLoOut = 0
When mcpHi approaches mcpLo equation 1 will degenerate into equation 2 and then arithmetic mean temperature differences must be used in the heat transfer equation. When abs(R-1) < 0.01 the following is used (with s = ua/(2*mcpHi)):
1. (1-s) *tHiIn -(1+s) *tHiOut + s *tLoIn + s *tLoOut = 0
If mSecHi = 0 or mSecLo = 0: When mSecLo is in a closed circuit (mSecHi arbitrary):
1. tHiIn - tHiOut = 0
2. tHiIn - tLoOut = 0
When mSecHi is in a closed circuit and mSecLo in an open one:
1. tHiOut - tLoIn = 0
2. tLoIn - tLoOut = 0
When both mSecHi and mSecLo is in an open circuit:
1. tHiIn - tHiOut = 0
2. tLoIn - tLoOut = 0
If mSecHi = 0:
3. pHiIn - pHiOut = 0
If mSecLo = 0:
4. pLoIn - pLoOut = 0
Relations:
1. mcpHi  = mSecHi*cpSecHi(tHiAv)
2. mcpLo  = mSecLo*cpSecLo(tLoAv)
3. ua     = u(mSecHi,mSecLo)*a
4. q      = mcpHi*(tHiIn-tHiOut)
5. tHiAv  = 0.5*(tHiIn+tHiOut)
6. tLoAv  = 0.5*(tLoIn+tLoOut)
7. q_a    = q/a
8. dtLmtd = q/ua

"Rotating heat exchanger" description

Conditions:
1. rEff = (tLoOut-tLoIn)/(tHiIn-tLoIn)
2. q    = mcpHi*(tHiIn-tHiOut)
3. q    = mcpLo*(tLoOut-tLoIn)
Equations:
1. rEff *tHiIn            +(1-rEff) *tLoIn      -tLoOut = 0
2. mcpHi *tHiIn -mcpHi *tHiOut     +mcpLo *tLoIn -mcpLo *tLoOut = 0
If mSecHi = 0 or mSecLo = 0:
1. tHiIn - tHiOut = 0
2. tLoIn - tLoOut = 0
Relations:
1. q     = mcpHi*(tHiIn-tHiOut)
2. tHiAv = 0.5*(tHiIn+tHiOut)
3. tLoAv = 0.5*(tLoIn+tLoOut)

"Heat exchanger with buffer" description

Condition:
1. ua*(tSecIn-tBuf-(tSecOut-tBuf))/ln((tSecIn-tBuf)/(tSecOut-tBuf))
   = mcp*(tSecIn-tSecOut)
With R = exp(ua/mcp) we have:

Equation:

1. tSecIn -R *tSecOut = (1-R)*tBuf
When abs(R-1) < 0.01 we use in stead (with sRfr = ua/(2*mcp)):
1. (1-sRfr) *tSecIn -(1+sRfr) *tSecOut = -2*sRfr*tBuf
If mSec = 0:
1. tSecOut = tBuf
Relations:
1. ua     = u(m,dtLmtd)*a
2. mcp    = mSec*cpSec(tSecAv)
3. q      = mcp*(tSecIn-tSecOut)
4. tSecAv = tBuf+dtLmtd
5. q_a    = q/a
6. dtLmtd = q/ua

"1D heat source with external heat exchanger" description

Condition:
1. ua*(tSecIn-tSurf-(tSecOut-tSurf))/ln((tSecIn-tSurf)/(tSecOut-tSurf))
   = mcp*(tSecIn-tSecOut)
With R = exp(ua/mcp) one have:

Equation:

1. tSecIn -R *tSecOut = (1-R)*tSurf
When abs(R-1) < 0.01 we use in stead (with kSec = ua/(2*mcp)):
1A. (1-kSec) *tSecIn -(1+kSec) *tSecOut = -2*kSec*tSurf
If mSec = 0:
1. tSecOut = tSurf
Relations:
1. ua     = u(m,dtLmtd)*a
2. mcp    = mSec*cpSec(tSecAv)
3. q      = mcp*(tSecIn-tSecOut)
4. tSecAv = tSurf+dtLmtd
5. q_a    = q/a
6. dtLmtd = q/ua
Comment: This component model uses the Heat1D object class, handling multi-layered one-dimensional transient heat conduction calculation in non-linear materials with phase change. It generates special output to the plant specification file not shared by "normal" components. The minimum non-zero time step of all layers used in one or several Heat1D-based components, is used as initial time step of the simulation.

"Electric heater" description

This is a component model for an electric heater.

Conditions:

1. mSec*cp*(tSecOut - tSecIn) = wEl
2. wEl = q

Equations:

1. -mSec*cp *tSecIn + mSec*cpSec *tSecOut -wEl = 0
2. wEl = q

If mSec = 0:

1. tSecIn - tSecOut = 0

"Heat exchanger for air drying" description

Conditions: The relative cooling factor rQ is specified by:
C1. rQ(hHumIn,tSecIn) = (hHumIn - hHumOut)/(hHumIn - HX_H_trh(tSecIn,100))
Rearranged:
C1. (1-rQ)*hHumIn - hHumOut + rQ*HX_H_trh(tSecIn,100) = 0
Linearizing HX_H_trh(tSecIn,100) = A1 + B1*tSecIn
producing:
C1. (1-rQ)*hHumIn - hHumOut + rQ*(A1 + B1*tSecIn) = 0
Heat balance of the heat exchanger:
C2. mHum*(hHumIn-hHumOut) = mSec*cpSecAv*(tSecOut-tSecIn)
Linearizing enthalpy of humid air:
HX_H_tx(t,x) = A2 + B2*t + C2*x
disregarding the D*x*t term from vapour heat capacity.
Replacing enthalpy coefficients by this produces eq. 1 and 2 below.
Eq1. (1-rQ)*B2In *tHumIn - B2Out *tHumOut +rQ*B1 *tSecIn
    +(1-rQ)*C2In *xHumIn - C2Out *xHumOut = -(1-rQ)*A2In + A2Out -rQ*A1
Eq2. mHum*B2In *tHumIn -mHum*B2Out *tHumOut +mRfr *hRfrIn -mRfr *hRfrOut
     + mHum*C2In *xHumIn -mHum*C2Out *xHumOut = -mHum*A2In +mHum*A2Out
The outlet absolute humidity xHumOut, considering a process
following a straight line towards tSecIn at the saturation line, is given by:

xHumOut = xHumIn + rQ*(HX_X_trh(tSecIn,100) - xHumIn)
        =(1-rQ) * xHumIn + rQ * HX_X_trh(tSecIn,100)
Linearizing HX_X_trh(tSecIn,100) = A3 + B3 * tSecIn giving
xHumOut = (1-rQ) *xHumIn + rQ*A3 + rQ*B3 *tSecIn
Rearranging this produces eq. 3 below.
Eq3. rQ*B3 *tSecIn +(1-rQ) *xHumIn - xHumOut = -rQ*A3
If after 4 iterations xHumOut > xHumIn the following is used:
1. rQ = (tHumIn-tHumOut)/(tHumIn-tSecIn)
3. xHumIn = xHumOut
New equations:
1. (1-rQ)*tHumIn - tHumOut + rQ*tSecIn = 0
3. xHumIn - xHumOut = 0
If after 4 iterations or more xHumOut > xHumIn, we use instead:
Eq1. rQ = (tHumIn-tHumOut)/(tHumIn-tSecIn)
Eq3. xHumIn = xHumOut
New equations:
Eq1. (1-rQ)*tHumIn - tHumOut + rQ*tSecIn = 0
Eq3. xHumIn - xHumOut = 0
If after 4 iterations or more hHumOut > hHumIn, the simulation is aborted. If conditions are so that (tSecIn,xHumOut) is in the mist region, then equation 3 is changed to:

Eq3. xHumOut = HX_X_trh(tSecIn,100) = A3 + B3 * tSecIn
producing:

Eq3. B3 *tSecIn - xHumOut = -A3
Relations:
1. mWater = mHum*(xHumIn - xHumOut)
2. q     = mSec*cpSec*(tSecOut-tSecIn)
3. qWater = mSec*HX_H_tx(tHumIn,xHumIn)-HX_H_tx(tHumIn,xHumOut))
4. qDry   = q-qHum
5. rhIn   = RHtx(tHumIn,xHumIn)
6. rhOut  = RHtx(tHumOut,xHumOut)
7. rmcp   = mHum*cpHumAv/mSec*cpSecAv
Comment: This model should not be used for heating humid air. The model is not designed for that.

"Fluidised bed for product drying" description

Conditions:
Heat balance with a simple enthalpy model for the product: hPr = cpPr*t + dhW*mc and a more complex model for the humid air enthalpy: hHum = HX_H_tx(tHum,xHum). The cpPr is the dry product heat capacity, while dhW is the heat of evaporization for water (2.5015 MJ/kg). This gives:
1. mPrIn*(cpPr*tPrIn + dhEvapW*mcPrIn) + mHum*HX_H_tx(tHumIn,xHumIn)
   = mPrOut*(cpPr*tPrOut + dhEvapW*mcPrIn) + mHum*HX_H_tx(tHumOut,xHumOut)
Linearizes:
HX_H_tx(tHumIn,xHumIn) = A1 + B1*tHumIn + C1*xHumIn
HX_H_tx(tHumOut,xHumOut) = A2 + B2*tHumOut + C2*xHumOut:
The temperature of the drying chamber is set equal to the wet bulb temperature of the inlet air (WB = wet bulb):
2. tPrOut = tWB(tHumIn,xHumIn) = HX_T_hrh(HX_H_tx(tHumIn,xHumIn),100)
This requires that mPrIn is not to large compared to the size of the bed so that the residence time (see below) is not too short for the required process to take place. Linearizes:
tWB(tHumIn,xHumIn) = A3 + B3*tHumIn + C3*xHumIn

Product moisture content leaving the drying chamber equals the moisture content after the residence time.

3. mcPrOut = mcPr(Time,residence)
Water mass flow rate balance of the drying chamber with product terms mPr*mcPr and humid air terms mHum*xHum:
4. mPrIn*mcPrIn + mHum*xHumIn = mPrOut*mcPrOut + mHum*xHumOut
Balance of the solid-part (dry) product mass flow rate of the drying chamber, this part being mPrSolid = mPr * (1-mcPr):
5. mPrIn*(1-mcPrIn) = mPrOut*(1-mcPrOut)
Equations:
1. mHum*B1 *tHumIn -mHum*B2 *tHumOut
   + mPrIn*cpPr *tPrIn + mPrIn*dhW *mcPrIn -mPrOut*cpPr *tPrOut -mPrOut*dhW *mcPrOut
   + mHum*C1 *xHumIn - mHum*C2 *xHumOut
   = mHum*(A2 - A1)
2. -B3 *tHumIn - C3 *xHumIn + tPrOut = A3
3. mcPrOut = mcPr(Time,residence)
4. mHum *xHumIn -mHum *xHumOut +mPrIn *mcPrIn -mPrOut *mcPrOut = 0
5. (1-mcPrIn) *mPrIn -(1-mcPrOut) *mPrOut = 0
Relations:

Moisture content leaving the drying chamber is the result of an integration in the product residence time during which a potential two-period drying is taking place. The first period is the capillary feed period (constant rate), the second one is the diffusion period (decreasing rate). Time integration from zero to the residence time contains one or both of the two drying periods:

1. mcPr(Time) = mcPr(Time-dTime) + d(mcPr)/dt*dTime, mcPr(0) = mcPrIn
2. d(mcPr)/dt
     = -rateCnst                                         , mcPr > mcPrCrit
     = -rateCnst(1+1/(mcPrCrit-mcPrEqui)*(mcPr-mcPrCrit)), mcPr < mcPrCrit
     = 0                                                 , mcPr <= mcPrEqui
   mcPr(Time) = mcPr(0)                                  , mcPr(0) < mcPrEqui
3. Time,residence = massPr / mPr, massPr being the product mass in the bed
4. mcPrEqui = 1/(1+1/(xMono*cM/((1-rhHumIn)*(1+cM-1)*rhHumIn))*rhHumIn)

"Gas cooler" description

This model handles sub- or supercritical cooling of refrigerant vapour transferring heat to a secondary fluid. It resembles the Superheat heat exchanger model, but operates with higher accuracy to enable handling close-to-critical-point conditions. And it calculates pressure drop in addition to heat transfer. It must be used with counter flow.

The exchanger is divided into nS number of sections (max: 50). Based upon inlet and outlet conditions for both fluids, the conditions at intersectional points are calculated with an internal iteration accounting for non-linearities.

1. ua*((tRfrIn-tSecOut-(tRfrOut-tSecIn))/ln((tRfrIn-tSecOut)/(tRfrOut-tSecIn))
   = mSec*cpSec*(tSecOut-tSecIn) = q
The ua value is an average value accounting both for varying thermal properties over the heat exchanger and deviations from the ideal exponential shape of the temperature difference. ua is calculated from summing heat transfer contributions dq(iS) from all sections:

q     = dq(1)    + dq(2)    + ... + dq(nS)
dpRfr = dpRfr(1) + dpRfr(2) + ... + dpRfr(nS)
dpSec = dpSec(1) + dpSec(2) + ... + dpSec(nS)
dq(iS) = mSec*cpSec(iS)*(tSec(iS)-tSec(iS+1))
       = u(iS)a/nS*(tRfr(iS)-tSec(iS)-(tRfr(iS+1)-tSec(iS+1))
         /ln((tRfr(iS)-tSec(iS))/(tRfr(iS+1)-tSec(iS+1)))
dpRfr(iS) = dpdl(mRfr,0.5*(tRfr(iS-1)+tRfr(iS-1)))*lRfr/nS
dpSec(iS) = dpdl(mSec,0.5*(tSec(iS-1)+tSec(iS-1)))*lSec/nS
iS       - Section number (Downstream for refrigerant, upstream for secondary fluid)
tRfr(iS) - Refrigerant temperature at inlet of section iS
tSec(iS) - Secondary fluid temperature at outlet of section iS.
u(iS)    - Heat transfer coefficient for section number iS.
ua is then calculated from:

ua = q/((tRfrIn-tSecOut-(tRfrOut-tSecIn))/ln((tRfrIn-tSecOut)/(tRfrOut-tSecIn))
R  = exp(ua*(1/(mRfr*cpRfr)-1/(mSec*cpSec)))
These values are calculated from a set of algebraic equations:
R(iS) *tSec(iS+1) -tSec(iS) + tRfr(iS) -R *tRfr(iS+1) = 0, iS = 1,nS
mRfr*cpRfr(iS)*(tRfr(iS)-tRfr(iS+1)) = mSec*cpSec(iS)*(tSec(iS)-tSec(iS+1)), iS = 1,nS
where R(iS) = exp(u(iS)*a/nS*(1/(mRfr*cpRfr(iS))-1/(mSec*cpSec(iS))))
and u(iS)*a = 1/(1/(uRfr(iS)*aRfr)+1/(uSec(iS)*aSec))
plus:

tRfr(1)    = tRfrIn
tSec(nS+1) = tSecIn
2. mRfr*(hRfrIn-hRfrOut) = mSec*cpSec*(tSecOut-tSecIn)
Equation 3 is expressing the refrigerant pressure drop represented by
a drop in the dew-point temperature.
3. tDPIn - tDPOut = dtTP, where dtTP is found from dpRfr.
Equation 4 calculates the secondary fluid pressure drop:
4. pSecIn - pSecOut = dpSec
Equations:
1. R*cpRfr *tSecIn -cpRfr *tSecOut + hRfrIn -R *hRfrOut = h0Rfr*(1-R)
2. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0
3. tDPIn - tDPOut = dtTP
4. pSecIn - pSecOut = dpSec
When R approaches 1, equation 1 is degenerated into equation 2 and
we have to use arithmetic mean temperatures in the heat transfer equation.
If abs(R-1) < 0.01 with kSec = 2*mcpSec/ua and rcp = cpSec/cpRfr:
1. (kSec-rcp) *hRfrIn -(kSec+rcp) *hRfrOut + hIn + hLoOut = 2*(-rcp*h0Rfr+h0Sec)
If mRfr = 0:
3. tDPIn - tDPOut = 0
If mSec = 0:
4. pSecIn - pSecOut = 0
Relations:
1. ua     = u(mRfr,m)*a
2. q      = mRfr*(hRfrIn-hRfrOut)
3. tRfrAv = 0.5*(tRfrIn+tRfrOut)
4. tSecAv = 0.5*(tSecIn+tSecOut)
5. q_a    = q/a
6. dtLmtd = q/ua
Comment: The model may cause stability problems if the area is too large. Start with a small area until you know how far the outlet conditions go.

"Superheat heat exchanger" description

This model handles sub- or supercritical cooling of refrigerant vapour transferring heat to a secondary fluid. It resembles the Gas cooler model, but operates with lower accuracy. It must be used with counter flow. Conditions:
1. ua*((tRfrIn-tSecOut-(tRfrOut-tSecIn))/ln((tRfrIn-tSecOut)/(tRfrOut-tSecIn))
   = mSec*cpSec*(tSecOut-tSecIn)
2. mRfr*(hRfrIn-hRfrOut) = mSec*cpSec*(tSecOut-tSecIn)
We use R = exp(ua*(1/(mRfr*cpRfr)-1/(mSec*cpSec))) and linearizes
hRfr = R_HgasTP(tRfr,R_PsatgasT(tDP)) = cpRfr*tRfr + h0Rfr
Equations:
1. R*cpRfr *tSecIn -cpRfr *tSecOut + hRfrIn -R *hRfrOut = h0Rfr*(1-R)
2. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0
When R approaches 1, equation 1 is degenerated into equation 2 and we have to use arithmetic mean temperatures in the heat transfer equation. If abs(R-1) < 0.01 with kSec = 2*mcpSec/ua and rcp = cpSec/cpRfr:
1. (kSec-rcp) *hRfrIn -(kSec+rcp) *hRfrOut + hIn + hLoOut = 2*(-rcp*h0Rfr+h0Sec)
Relations:
1. ua     = u(mRfr,m)*a
2. q      = mRfr*(hRfrIn-hRfrOut)
3. tRfrAv = 0.5*(tRfrIn+tRfrOut)
4. tSecAv = 0.5*(tSecIn+tSecOut)
5. q_a    = q/a
6. dtLmtd = q/ua
Comment: The model may cause stability problems if the area is too large. Start with a small area until you know how far the outlet conditions go.

"Subcooling heat exchanger" description

Conditions:
1. ua*((tRfrIn-tSecOut-(tRfrOut-tSecIn))/ln((tRfrIn-tSecOut)/(tRfrOut-tSecIn))
       = mSec*cpSec*(tSecOut-tSecIn)
2. mRfr*(hRfrIn-hRfrOut) = mSec*cpSec*(tSecOut-tSecIn)
We use R = exp(ua*(1/(mRfr*cpRfr)-1/(mSec*cpSec)))
and hRfrIn = R_HsatliqT(tRfrAv) = h01 + cpRfr*tDP
and have:

Equations:

1. R*cpSec *tSecIn   -cpSec *tSecOut    + hRfrIn  -R *hRfrOut = h01*(1-R)
2. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0

When R approaches 1, equation 1 degenerates into equation 2 and we have to use arithmetic mean temperatures in the heat transfer equation.

If abs(R-1) < 0.01 with kSec = 2*mcpSec/ua and rcp = cpSec/cpRfr:

1. (kSec-rcp) *hRfrIn -(kSec+rcp) *hRfrOut + hIn + hLoOut = 2*(-rcp*h0Rfr+h0Sec)
Relations:
1. ua     = u(mRfr,m)*a
2. q      = mRfr*(hIn-hOut)
3. tHiAv  = 0.5*(tHiIn+tHiOut)
4. tLoAv  = 0.5*(tLoIn+tLoOut)
5. q_a    = q/a
6. dtLmtd = q/ua
Comment: The model may cause stability problems if the area is too large. Start with a small area until you know how far the outlet conditions go.

"Standard condenser" description

The model is based on disregarding the increased LMTD from the normally superheated inlet and a possibly subcooled outlet. On the other hand the superheated and subcooled enthalpies are taken care of.

Conditions:

1. mcp*(tSecOut-tSecIn) = ua*((tRfrOut-tSecIn-(tRfrIn-tSecOut))
                          /ln((tRfrOut-tSecIn)/(tRfrIn-tSecOut))
2. mcp*(tSecOut-tSecIn) = mRfr*(hRfrIn-hRfrOut)
tRfrIn is replaced by tDP = R_TsatgasP(pRfr) and
tRfrOut is replaced by tBP = R_TsatliqP(pRfr)
if tBP = tDP:
R = exp(ua/mcpSec)
1. tSecIn -R *tSecOut +(R-1) *tDP = 0
if tBP <> tDP:
R = exp(ua*(1/mcpSec-1/(mRfr*cpRfr))), where cpRfr = (hDP-hBP)/(tDP-tBP)
1. tSecIn -R *tSecOut +R *tBP - tDP = 0
Linearizes:
tBP = R_TsatliqP(pRfr) = R_TsatliqP(R_PsatgasT(tDP)) = A_BP + B_BP *tDP
resulting in:

Equations:

1. tSecIn -R *tSecOut +(R*B_BP-1) *tDP = -A_BP*R
2. mcp *tSecIn -mcp *tSecOut + mRfr *hRfrIn -mRfr *hRfrOut = 0
If mSec = 0 or mRfr = 0:
1. tSecIn - tSecOut = 0
2. hRfrOut = hRfrOut(previous) , mRfr = 0
2. hRfrIn - hRfrOut = 0        , mRfr <> 0
Relations:
1. mcp     = mSec*cpSec(tSecAv)
2. ua      = u(m,q_a)*a
3. q       = mRfr*(hRfrIn - hRfrOut)
4. tRfrIn  = R_TgasHP(hRfrIn,R_PsatgasT(tDP))
5. tRfrOut = R_satliqH(hRfrOut,R_PsatliqT(tDP))
6. tSecAv  = 0.5*(tSecIn+tSecOut)
7. dtLmtd  = q/ua
8. q_a     = q/a

"Accurate condenser" description

The model is based on accurately integrating the heat transfer and pressure change through the condenser to account for varying pressure gradients, heat transfer coefficient, temperature difference and refrigerant pressure. It presupposes counter flow.

The user specifies individual correlations for the pressure gradient and heat transfer coefficient of the liquid, two-phase, and gas domain. The data for the two-phase domain must be averaged over the total condensation, as there is no input of vapour fraction.

The exchanger is divided into nS number of sections (max: 50). Based upon inlet and outlet conditions for both fluids, the conditions at intersectional points are calculated with an internal iteration accounting for non-linearities. The result is an accurate value of the total heat transfer q and the pressure drops dpRfr and dpSec.

q     = dq(1)    + dq(2)    + ... + dq(nS)
dpRfr = dpRfr(1) + dpRfr(2) + ... + dpRfr(nS)
dpSec = dpSec(1) + dpSec(2) + ... + dpSec(nS)
Initial assumption from initially specified parameter value "q_a ":
q = q_a*a and dq(iS) = q/nS
tSec(1)   = tSecOut,
tSec(iS)  = tSec(iS-1) - dq(iS)/(mSec*cpSec(tSec(iS-1)), iS = 2,nS
dpSec(iS) = dpdl(mSec,0.5*(tSec(iS-1)+tSec(iS-1)))*lSec/nS
tRfr(1)   = tRfrIn = R_TxHP(hRfrIn,pRfrIn),
tRfr(iS)  = R_TxHP(hRfr(iS-1),pRfr(iS-1)), hRfr(iS-1) = hRfr(iS) - dq(iS)/mRfr, iS=2,nS
dpRfr(iS) = dpdl(mRfr,0.5*(tRfr(iS-1)+tRfr(iS-1)))*lRfr/nS
iS       - Section number (Downstream for refrigerant, upstream for secondary fluid)
tRfr(iS) - Refrigerant temperature at inlet of section iS
tSec(iS) - Secondary fluid temperature at outlet of section iS.
New values of dq(iS) are calculated from:

dq(iS) = (tRfr(iS)-tSec(iS))/(1/(uSec*aSec)+1/(uRfr*aRfr))
The new dq values are again used to evaluate improved tRfr(iS) and tSec(iS) values.

q is then said to be the result of an exponential heat transfer with an equivalent value of ua from:

q = ua*((tDPIn-tSecIn-(tDPIn-tSecOut))/ln((tDPIn-tSecIn)/(tDPIn-tSecOut))
giving the equation:

1. (R-1) *tDPIn +tSecIn -R *tSecOut = 0
where R = exp(ua/mcpSec)
The other equation is based on enthalpy balance of the two fluids:

2. mRfr*(hRfrIn-hRfrOut) = mSec*cpSec*(tSecOut-tSecIn)
Equation 3 is expressing the refrigerant pressure drop represented by
a drop in the dew-point temperature.
3. tDPIn - tDPOut = dtTP, where dtTP is found from dpRfr.
Equation 4 calculates the secondary fluid pressure drop:
4. pSecIn - pSecOut = dpSec
Equations:
1. (R-1) *tDPIn +tSecIn -R *tSecOut = 0
2. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0
3. tDPIn - tDPOut = dtTP
4. pSecIn - pSecOut = dpSec
If mSec = 0 or mRfr = 0:
1. tSecIn - tSecOut = 0
2. hRfrOut = hRfrOut(previous) , mRfr = 0
2. hRfrIn - hRfrOut = 0        , mRfr <> 0
If mRfr = 0:
3. tDPIn - tDPOut = 0
If mSec = 0:
4. pSecIn - pSecOut = 0
Relations:
1. mcpSec  = mSec*cpSec(tSec)
2. q       = mRfr*(hRfrIn - hRfrOut)
3. pRfrIn  = R_PsatgasT(tDPIn)
4. pRfrOut = R_PsatgasT(tDPOut)
5. tRfrIn  = R_TgasHP(hRfrIn,pRfrIn)
6. tRfrOut = R_TsatliqH(hRfrOut,pRfrOut)
7. dtLmtd  = q/ua
8. q_a     = q/aRfr

"Standard evaporator" description

The model is based on disregarding the increased LMTD from the normally superheated outlet. On the other hand the real enthalpies are used.

Conditions:

1. mcp*(tSecIn-tSecOut) = ua*((tSecIn-tRfrOut-(tSecOut-tRfrIn))
                          /ln((tSecIn-tRfrOut)/(tSecOut-tRfrIn))
2. mcp*(tSecIn-tSecOut) = mRfr*(hRfrOut-hRfrIn)
tRfrIn is replaced by tDP = R_TsatgasP(pRfr) and
tRfrOut is replaced by tBP = R_TsatliqP(pRfr)
if tBP = tDP:
R = exp(ua/mcpSec)
1. tSecIn -R *tSecOut +(R-1) *tDP = 0
if tBP <> tDP:
R = exp(ua*(1/mcpSec-1/(mRfr*cpRfr))), where cpRfr = (hDP-hBP)/(tDP-tBP)
1. tSecIn -R *tSecOut +R *tBP - tDP = 0
Linearizes tBP = R_TsatliqP(pRfr) = R_TsatliqP(R_PsatgasT(tDP)) = A_BP + B_BP *tDP
resulting in:

Equations:

1. tSecIn -R *tSecOut +(R*B_BP-1) *tDP = -A_BP*R
2. mcp *tSecIn -mcp *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0
If mSec = 0 or mRfr = 0:
1. tSecIn - tSecOut = 0
2. hRfrOut = hRfrOut(previous)  , mRfr = 0
2. hRfrIn - hRfrOut = 0         , mRfr <> 0
Relations:
1. mcp     = mSec*cpSec(tSecAv)
2. ua      = u(m,q_a)*a
3. q       = mRfr*(hRfrOut - hRfrIn)
4. tRfrOut = R_TgasHP(hRfrOut,R_PsatgasT(tDP))
5. tSecAv  = 0.5*(tSecIn+tSecOut)
6. q_a     = q/a
7. dtLmtd  = q/ua

"Accurate evaporator" description

The model is based on accurately integrating the heat transfer and pressure change through the evaporator to account for varying pressure gradients, heat transfer coefficient, temperature difference and refrigerant pressure. It presupposes counter flow.

The user specifies individual correlations for the pressure gradient and heat transfer coefficient of the liquid (normally not used), two-phase, and gas domain. The data for the two-phase domain must be averaged over the total evaporation, as there is no input of vapour fraction.

The exchanger is divided into nS number of sections (max: 50). Based upon inlet and outlet conditions for both fluids, the conditions at intersectional points are calculated with an internal iteration accounting for non-linearities. The result is an accurate value of the total heat transfer q and the pressure drops dpRfr and dpSec.

q     = dq(1)    + dq(2)    + ... + dq(nS)
dpRfr = dpRfr(1) + dpRfr(2) + ... + dpRfr(nS)
dpSec = dpSec(1) + dpSec(2) + ... + dpSec(nS)
Initial assumption from initially specified parameter value "q_a ":
q = q_a*a and dq(iS) = q/nS
tSec(1)   = tSecOut,
tSec(iS)  = tSec(iS-1) + dq(iS)/(mSec*cpSec(tSec(iS-1)), iS = 2,nS
dpSec(iS) = dpdl(mSec,0.5*(tSec(iS-1)+tSec(iS-1)))*lSec/nS
tRfr(1)   = tRfrIn = R_TxHP(hRfrIn,pRfrIn),
tRfr(iS)  = R_TxHP(hRfr(iS-1),pRfr(iS-1)), hRfr(iS-1) = hRfr(iS) + dq(iS)/mRfr, iS=2,nS
dpRfr(iS) = dpdl(mRfr,0.5*(tRfr(iS-1)+tRfr(iS-1)))*lRfr/nS
iS       - Section number (Downstream for refrigerant, upstream for secondary fluid)
tRfr(iS) - Refrigerant temperature at inlet of section iS
tSec(iS) - Secondary fluid temperature at outlet of section iS.
New values of dq(iS) are calculated from:

dq(iS) = (tSec(iS)-tRfr(iS))/(1/(uSec*aSec)+1/(uRfr*aRfr))
The new dq values are again used to evaluate improved tRfr(iS) and tSec(iS) values.

q is then said to be the result of an exponential heat transfer with an equivalent value of ua from:

q = ua*((tSecIn-tDPIn-(tSecOut-tDPIn))/ln((tSecIn-tDPIn)/(tSecOut-tDPIn))
giving the equation:

1. (R-1) *tDPIn +tSecIn -R *tSecOut = 0
where R = exp(ua/mcpSec)
The other equation is based on enthalpy balance of the two fluids:

2. mRfr*(hRfrOut-hRfrIn) = mSec*cpSec*(tSecIn-tSecOut)
Equation 3 is expressing the refrigerant pressure drop represented by a drop in the dew-point temperature.
3. tDPIn - tDPOut = dtTP, where dtTP is found from dpRfr.
Equation 4 calculates the secondary fluid pressure drop:
4. pSecIn - pSecOut = dpSec
Equations:
1. (R-1) *tDPIn +tSecIn -R *tSecOut = 0
2. mSec*cpSec *tSecIn -mSec*cpSec *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0
3. tDPIn - tDPOut = dtTP
4. pSecIn - pSecOut = dpSec
If mSec = 0 or mRfr = 0:
1. tSecIn - tSecOut = 0
2. hRfrOut = hRfrOut(previous) , mRfr = 0
2. hRfrIn - hRfrOut = 0        , mRfr <> 0
If mRfr = 0:
3. tDPIn - tDPOut = 0
If mSec = 0:
4. pSecIn - pSecOut = 0
Relations:
1. mcpSec  = mSec*cpSec(tSec)
2. q       = mRfr*(hRfrOut-hRfrIn)
3. pRfrIn  = R_PsatgasT(tDPIn)
4. pRfrOut = R_PsatgasT(tDPOut)
5. tRfrIn  = R_TgasHP(hRfrIn,pRfrIn)
6. tRfrOut = R_TsatliqH(hRfrOut,pRfrOut)
7. dtLmtd  = q/ua
8. q_a     = q/aRfr

"Evaporator for air drying" description

Conditions: The relative cooling factor rQ is specified by:
C1. rQ(hHumIn,tDP) = (hHumIn - hHumOut)/(hHumIn - HX_H_trh(tDP,100))
Rearranged:
C1. (1-rQ)*hHumIn - hHumOut + rQ*HX_H_trh(tDP,100) = 0
Linearizing:
HX_H_trh(tDP,100) = A1 + B1*tDP
producing:
C1. (1-rQ)*hHumIn - hHumOut + rQ*(A1 + B1*tDP) = 0
Heat balance of the heat exchanger:
C2. mHum*(hHumIn-hHumOut) = mRfr*(hRfrOut-hRfrIn)
Linearizing:
HX_H_tx(t,x) = A2 + B2*t + C2*x
disregarding the D2*x*t term from vapour heat capacity. Replacing enthalpy coefficients by this produces eq. 1 and 2.
Eq1. (1-rQ)*B2In *tHumIn - B2Out *tHumOut +rQ*B1 *tDP
    +(1-rQ)*C2In *xHumIn - C2Out *xHumOut = -(1-rQ)*A2In + A2Out -rQ*A1
Eq2. mHum*B2In *tHumIn -mHum*B2Out *tHumOut +mRfr *hRfrIn -mRfr *hRfrOut
     + mHum*C2In *xHumIn -mHum*C2Out *xHumOut = -mHum*A2In +mHum*A2Out
The outlet absolute humidity xHumOut, considering a process following a straight line towards tDP at the saturation line, is given by:

xHumOut = xHumIn + rQ*(HX_X_trh(tDP,100) - xHumIn)
        =(1-rQ)*xHumIn + rQ*X_X_trh(tDP,100)
Linearizing
HX_X_trh(tDP,100) = A3 + B3 * tDP
giving
xHumOut = (1-rQ)*xHumIn + rQ*A3 + rQ*B3 *tDP
Rearranging this produces eq. 3 below.
Eq3. rQ*B3 *tDP +(1-rQ) *xHumIn - xHumOut = -rQ*A3
If after 4 iterations or more xHumOut > xHumIn, we use instead:
Eq1. rQ = (tHumIn-tHumOut)/(tHumIn-tDP)
Eq3. xHumIn = xHumOut
New equations:
Eq1. (1-rQ)*tHumIn - tHumOut + rQ*tDP = 0
Eq3. xHumIn - xHumOut = 0
If after 4 iterations or more hHumOut > hHumIn, the simulation is aborted.

If conditions are so that (tDP,xHumOut) is in the mist region, then equation 3 is changed to:

Eq3. xHumOut = HX_X_trh(tDP,100) = A3 + B3 * tDP
producing:
Eq3. B3 *tDP - xHumOut = -A3
Relations:
1. mWater = mHum*(xHumIn - xHumOut)
2. q      = mRfr*(hRfrOut-hRfrIn)
3. qWater = mSec*HX_H_tx(tHumIn,xHumIn)-HX_H_tx(tHumIn,xHumOut))
4. qDry   = q-qHum
5. rhIn   = RHtx(tHumIn,xHumIn)
6. rhOut  = RHtx(tHumOut,xHumOut)
Comment: This model should not be used for heating humid air. The model is not designed for this.

"Evaporator for humid air" description

Conditions for dry air:
1. mcp*(tHumIn-tHumOut) = ua*((tHumIn-tDP-(tHumOut-tDP))
                          /ln((tHumIn-tDP)/(tHumOut-tDP))
2. mcp*(tHumIn-tHumOut) = mRfr*(hRfrOut-hRfrIn)
3. xHumOut = xHumIn - mCond/mHum
For humid air the same correlation is used, only with cp and u replaced by cpHum and uHum given by:

cpHum = (hHumIn-hHumOut)/(tHumIn-tHumOut)
uHum  = u + mCond * dhVap / dtLmtd
using dtLmtd  = (tHumIn-tDP-(tHumOut-tDP))/ln((tHumIn-tDP)/(tHumOut-tDP)
      mCond = ua/cpHum * (0.5*(xHumIn+xHumOut) - HX_X_trh(tDP,100))
and   dhVap = HX_Hvanndamp_t(tDP + dtLmtd) - HX_Hvanndamp_t(tDP)
Equations:
1. (exp(uHum*a/m*cpHum)-1) *tDP +tSecIn -exp(uHum*a/m*cpHum) *tSecOut = 0
2. m*cpHum *tSecIn -m*cpHum *tSecOut +mRfr *hRfrIn -mRfr *hRfrOut = 0
If mSec = 0 or mRfr = 0:
1. tSecIn - tSecOut = 0
2. hRfrOut = hRfrOut(previous), mRfr = 0
2. hRfrIn - hRfrOut = 0       , mRfr <> 0
Relations:
1. mcp     = mSec*cpSec(tSecAv)
2. ua      = u(m,q_a)*a
3. q       = mRfr*(hRfrOut - hRfrIn)
4. tRfrOut = R_TgasHP(hRfrOut,R_PsatgasT(tDP))
5. tHumAv  = 0.5*(tSecIn+tSecOut)
6. q_a     = q/a
7. dtLmtd  = q/ua

"Condenser with given capacity" description

Condition:
1. mRfr*(hRfrIn-hRfrOut) = q
Equation:
1. mRfr*hRfrIn - mRfr*hRfrOut = q
If mRfr = 0:
1. hRfrOut = hRfrOut(previous)

"Evaporator with given capacity" description

Condition:
1. mRfr*(hRfrOut-hRfrIn) = q
Equation:
1. mRfr*hRfrIn - mRfr*hRfrOut = -q
If mRfr = 0:
1. hRfrOut = hRfrOut(previous)

"Air cooler with given capacity" description

This model is obsolete and can not be selected any more. It is only kept to ensure backwards compatibility. It should be replaced by the model "Evaporator with given capacity".

Condition:

1. mRfr*(hRfrOut-hRfrIn) = q(tDP)
Linearizes:
Q(tDP) = C1*tDP +C2
Finds two points (tDP,q): (tDPA,qA) and (tDPB,qB)
C1 = (qB-qA)/(tDPB-tDPA)
C2 = qA - C1*tDPA
Equation:
1. C1 *tDP + mRfr*hRfrIn - mRfr*hRfrOut = -C2
If mRfr = 0:
1. hRfrOut = hRfrOut(previous)
Relations:
1. q_a     = q/a
2. tRfrOut = R_TgasHP(hRfrOut,R_PsatgasT(tDP))
3. tSecAv  = 0.5*(tSecIn+tSecOut)
4. dtLmtd  = q/ua
Comment: This component model was especially designed to be interfaced to an external routine calculating heat transfer in an air heated evaporator. Therefore some data are included that FrigoSim does not use directly. If you use the model without this routine, you may specify anything for the data 2-4 and 6. Only 1(a) and 5(q) are used by FrigoSim and must be given the correct values.

"Suction gas heat exchanger" description

Conditions:
1. ua*((tHiIn-tHiOut)-(tLoOut-tLoIn))/ln((tHiIn-tLoOut)/(tHiOut-tLoIn))
   = mRfrHi*(hHiIn-hHiOut)
2. mRfrHi*(hIn-hOut) = mRfrLo*(hLoOut-hLoIn)
Linearizes:
hHi = R_HxTPX(tHi,R_PsatgasT(tDPHi),xHi) = h0Hi + cpHi*tHi
hLo = R_HxTPX(tLo,R_PsatgasT(tDPLo),xLo) = h0Lo + cpLo*tLo
evaluated at average conditions. Using:
R    = exp(ua*(1/(mRfrHi*cpHi)-1/(mRfrLo*cpLo)))
rcp  = cpLo/cpHi
we have:

Equations:

1. rcp    *hHiIn -R*rcp  *hHiOut    +R   *hLoIn -        hLoOut = (1-R)*(rcp*h0Hi-h0Lo)
2. mRfrHi *hHiIn -mRfrHi *hHiOut +mRfrLo *hLoIn -mRfrLo *hLoOut = 0
When R approaches 1 then equation 1 degenerates into equation 2 and we have to use arithmetic mean temperatures in the heat transfer equation.

If abs(R-1) < 0.01 using kRfr = 2*mcpLo/ua:

1A. (kRfr-rcp) *hHiIn -(kRfr+rcp) *hHiOut + hLoIn + hLoOut = 2*(-rcp*h0Hi+h0Lo)
If mRfrHi = 0 or mRfrLo = 0:
1. hHiIn - hHiOut = 0
2. hLoIn - hLoOut = 0
Relations:
1. ua     = u(mRfrHi,q_a)*a
2. q      = mRfrHi*(hIn-hOut)
3. tHiAv  = (0.5*(hIn+hOut)-h01)/cpSecHi
4. tLoAv  = (0.5*(tLoIn+tLoOut)-h02)/cpSecLo
5. q_a    = q/a
6. dtLmtd = q/ua

"Oil return heat exchanger" description

Condition:
1. mRfrHi*(hIn-hOut) = ua*((tHiIn-tDPHi-(tHiOut-tDPHi))
                       /ln((tHiIn-tDPHi)/(tHiOut-tDPHi))
2. mRfrHi*(hIn-hOut) = mRfrLo*(hLoOut-hLoIn)
Uses R = exp(ua/(mRfrHi*cpSecHi) and "R_HsatliqT "(tBPHi) = h01 + cpRfrHi*tBPHi:

Equation:

1. cpRfrHi*(R-1) *tBPHi + hHiIn -R *hHiOut = (1-R)*h01
2. mRfrHi *hHiIn -mRfrHi *hHiOut +mRfrLo *hLoIn -mRfrLo *hLoOut = 0
If mRfrHi = 0 or mRfrLo = 0:
1. hHiIn - hHiOut = 0
2. hLoIn - hLoOut = 0
Relations:
1. ua    = u(mRfrHi,q_a)*a
2. q     = mRfrHi*(hHiIn - hHiOut)
3. tHiAv = R_satliqH(0.5*(hHiIn+hHiOut))

"Cascade heat exchanger" description

Conditions:
1. mRfrHi*(hIn-hOut) = ua*(tDP-tDPHi)
2. mRfrHi*(hIn-hOut) = mRfrLo*(hLoOut-hLoIn)
Equations:
1. ua *tDP -ua *tDPHi -mRfrHi *hIn +mRfrHi *hOut = 0
2. mRfrHi *hIn -mRfrHi *hOut +mRfrLo *hLoIn -mRfrLo *hLoOut = 0
If mRfrHi = 0 or mRfrLo = 0:
1. hOut = hOut(previous)    , mRfrHi = 0
1. hRfrIn - hOut = 0        , mRfrHi <> 0 , mRfrLo = 0
2. hLoOut = hLoOut(previous), mRfrLo = 0
2. hLoIn - hLoOut = 0       , mRfrHi = 0 , mRfrLo <> 0
Relations:
1. ua   = u(q_a)*a
2. q    = mRfrHi*(hIn-hOut)
3. q_a  = q/a

"Temperature boundary" description

This is a component model representing a temperature-type boundary, ref. boundaries for heat transfer. The temperature is set by a function, ref. functions input.

"Convective boundary" description

This is a component model representing a convective boundary, ref. boundaries for heat transfer. Both the heat transfer coefficient and the ambient temperature are set by a function, ref. functions input.

"Heat flux load" description

This is a model for setting a specific heat flux load on a boundary.
This heat flux is a controllable parameter.

"Outdoor climate" description

This is a model for calculating the atmospheric climate impact on a construction.

Convection heat transfer


C1. qConv = uConv * (tAir - tSurf)

uConv depends on tAir and velAir based on correlations for an upward horizontal surface (described later).

Long wave radiation exchanged


The long-wave net irradiation from a clear sky (qLW0) is calculated based on reference Frank, see below:

LW-1. eAtm0 = 0.745 + 0.0056*tDew

where tDew is the dew point temperature 2 m above the surface.

LW-2. qLW0 = eLWSurf * cSB * (eAtm0 * (tAir+273.15)**4 - (tSurf+273.15)**4)

cSB is the Stefan-Boltzmann number, tAir is the air temperature 2 m above the surface and tSurf the surface temperature.

Adjustment for cloud cover is based on reference Martin (see below):

LW-3. eAtm = eAtm0 + (1 - eAtm0)*rCover*eCloud*exp(GradT*lCloud/dt)

rCover is the fractional cloud cover, GradT = -0.0056 K/m, lCloud is the lower cloud height (base height) and dt = 38 K. eCloud = 1 (for low and medium high clouds), while a lower value (down to 0) should be selected for high altitude cirrus clouds.

LW-4. qLW = eSurf * cSB * (eAtm*(tAir+273.15)**4 - (tSurf+273.15)**4)
LW-5. qLW = uLW * (tLWAmb - tSurf)
uLW and tLWAmb in LW-5 is calculated from LW-4.

The preferred selection of the two correlations above plus a replacement of the original dt = 46 K to 38 K are all based on reference IEA94, see below.

Short wave irradiation


SW-1: qSW = eSWSurf * qGlobal

Precipitation


The heat transfer from precipitation (as rain) is calculated as:

PR-1. qPrec = velRain*densWater*cpWater*(tAir-tSurf)
PR-2. qPrec = uPrec * (tAir - tSurf)
PR-3. uPrec = velRain*densWater*cpWater

Snow is not considered to be a source of heat transfer, as it accumulates and soon is in equilibrium with the surface. So for tAir < 0: qPrec = 0.

Condensation and evaporation


Condensation to and evaporation from the surface is calculated. To be able to calculate an evaporation, some conditions on the containment of water on the surface and supply of water to the surface must be assumed. The drainage properties of the surface is set through the data "Upper water level" (lWatMax). For a perfectly drained and water repellant surface, this value is set to 0. This will effectively eliminate any evaporation to take place, unless the surface temperature is below 0. A more reasonable value is 1 mm, indicating a drained surface with a wettable material. Evaporation will take place until the surface has been dried up.

The current "Water level" value (lWat) is calculated from an initial value with contributions from precipitation (mPrec) and condensation (mCond > 0). Evaporation corresponds to mCond < 0.

CE-1. xAir = HX_X_trh(tAir,100*rhAir)
CE-2. hAir = HX_Hvanndamp_t(tAir)
CE-3. xSurf = HX_X_trh(tSurf,100)
CE-4. mCond = uConv * rCoarse/cpAir * (xAir-xSurf)
CE-5. if tSurf < 0 then hSurf = HX_His_t(tSurf) else hSurf = HX_Hvann_t(tSurf)
CE-6. qCond = mCond * (hAir - hSurf)
CE-7. qCond = uCond * (tAir - tSurf)

uConv (in CE-4) is the dry convection heat transfer coefficient.

If there are conditions for frost build-up, the added heat resistance in the surface is not considered. On the other hand the emissivity is modified in this case, the short-wave set to the low value 0.05 and the long-wave to 0.99.

Total boundary model


All heat contributions (qConv, qCond, qSW, qLW and qPrec) are collected into this model:

T-1. qTot = qDir + uTot * (tAmbTot - tSurf)
T-2. qTot = qConv + qCond + qLW + qSW + qPrec
T-3. uTot = uConv + uLW + uPrec + uCond
T-4. qDir = qSW

TAmbTot follows from T-1.

"Phase separator for refrigerants" description

Conditions:
1. mRfr*hRfr = mRfrLiq*hLiq + mRfrGas*hGas
2. hLiq      = R_HsatliqT(tDP)
3. hGas      = R_HsatgasT(tDP)
4. mRfr      = mRfrLiq + mRfrGas
5. mRfrGas   = xRfr*mRfr
Linearizes:
R_HsatliqT(tDP) = C1 + C2*tDP
R_HsatgasT(tDP) = C3 + C4*tDP

Equations:

1. mRfr *hRfr -mRfrLiq *hLiq -mRfrGas *hGas = 0
2. C2 *tDP -hLiq = C1
3. C4 *tDP -hGas = C3
4. mRfr - mRfrLiq - mRfrGas = 0
5. xRfr *mRfr - mRfrGas = 0
Relations:
1. xRfr = Xlqgs(tDP,hRfr)

"Open flash chamber with 3 ports" description

Conditions:
1. mRfrIn*hRfrIn = mRfrLiq*hRfrLiq + mRfrGas*hRfrGas
2. hRfrLiq = R_HsatliqT(tDP)
3. hRfrGas = R_HsatgasT(tDP)
4. mRfrIn  = mRfrLiq + mRfrGas

Linearizes

 R_HsatliqT(tDP) = C1 + C2*tDP and R_HsatgasT(tDP) = C3 + C4*tDP:

Equations:

1. mRfrIn *hRfrIn -mRfrLiq *hLiq -mRfrGas *hGas = 0
2. C2 *tDP -hRfrLiq = C1
3. C4 *tDP -hRfrGas = C3
4. mRfrIn - mRfrLiq - mRfrGas = 0

If mRfrIn = 0:

hRfrIn = R_HlqgsTX(tDP,xRfr) is linearised to C5 + C6*tDP giving:
1. -C6 *tDP + hRfrIn = C5

"Open flash chamber with 4 ports" description

Conditions:
1. mRfrLo*hLoIn + mRfrHi*hHiIn = mRfrLo*hLoOut + mRfrHi*hHiOut
2. hLoOut = R_HsatliqT(tBP)
3. hHiOut = R_HsatgasT(tDP)
where tBP = R_TsatliqP(pRfr)
and   tDP = R_TsatgasP(pRfr)
Linearizes:
hLoOut = R_HsatliqT(tBP) = R_HsatliqT(R_TsatliqP(pRfr))
       = R_HsatliqT(R_TsatliqP(R_PsatgasT(tDP))) = ALo + BLo * tDP
hHiOut = R_HsatgasT(tDP) = AHi + BHi * tDP
Equations:
1. mRfrHi *hIn - mRfrHi *hOut + mRfrLo *hLoIn - mRfrLo *hLoOut = 0
2. BLo *tDP - hLoOut = -ALo
3. BHi *tDP - hHiOut = -AHi
If mRfrHi = 0 and mRfrLo = 0:
1. pRfr = pRfr,previous

"Closed flash chamber with 4 ports" description

Conditions:
1. mRfrLo*(hLoOut-hLoIn) = mRfrHi*(hHiIn-hHiOut)
2. mRfrLo*(hLoOut-hLoIn) = ua*(tDPHi-tDPLo)
3. hLoOut = R_HsatgasT(tDPLo)
Equations:
1. mRfrLo *hLoIn - mRfrLo *hLoOut + mRfrHi *hHiIn -mRfrHi *hHiOut = 0
2. -ua *tDPLo +ua *tDPHi +mRfrLo *hLoIn -mRfrLo *hLoOut = 0
3. C1 *tDPLo -hLoOut = -C2
The coefficients C1 and C2 is given by:

hLoOutA = R_HsatgasT(tDPLo)
hLoOutB = R_HsatgasT(tDPLo+dt)
C1 = (hLoOutB - hLoOutA)/dt
C2 = hLoOutA - C1*tDPLo
If mRfrHi = 0 or mRfrLo = 0:
1. tDPLo = tDPLo(previous)
2. hHiIn - hHiOut = 0
Relations:
1. q = mRfrHi*(hHiIn - hHiOut)
2. tHiAv = 0.5*(tHiIn + tHiOut)

"Cooled flash chamber" description

Conditions:
1. mcp*(tSecOut-tSecIn) = ua*((tDP-tSecIn-(tDP-tSecOut))
                          /ln((tDP-tSecIn)/(tDP-tSecOut))
2. mRfr*h + mcp*tSecIn = mRfrLiq*hLiq + mRfrGas*hGas + mcp*tSecOut
3. hLiq  = R_HsatliqT(tDP)
4. hGas  = R_HsatgasT(tDP)
5. mRfrIn = mRfrLiq + mRfrGas
Linearizes:
R_HsatliqT(tDP) = C1 + C2*tDP
R_HsatgasT(tDP) = C3 + C4*tDP
Equations:
1. (exp(ua/mcp)-1) *tDP + tSecIn -exp(ua/mcp) *tSecOut = 0
2. mcp *tSecIn -mcp *tSecOut + mRfr *hRfr -mRfrLiq *hLiq -mRfrGas *hGas = 0
3. C2 *tDP -hLiq = C1
4. C4 *tDP -hGas = C3
5. mRfrIn - mRfrLiq - mRfrGas = 0
If mSec = 0 or mRfrIn = 0:
1. tSecIn - tSecOut = 0
If mRfrIn = 0:
2. -C6 *tDP + hRfr = C5
with C6 = (Hlqgs(tDP+dt,xRfrIn) - Hlqgs(tDP,xRfr))/dt
and  C5 = Hlqgs(tDP,xRfrIn) - C6*tDP
Relations:
1. mcp     = mSec*cpSec(tSecAv)
2. ua      = u(mSec,q_a)*a
3. q       = mcp*(tSecOut - tSecIn)
4. tRfrIn  = R_TgasHP(hRfrIn,R_PsatgasT(tDP))
5. tRfrOut = R_satliqH(hRfrOut,R_PsatgasT(tDP))
6. tSecAv  = 0.5*(tSecIn+tSecOut)
7. dtLmtd  = q/ua
8. q_a     = q/a

"Standard boiler" description

Condition:
1. mSec*cpSec*(tSecOut - tSecIn) = q
Equation:
1. -mSec*cpSec *tSecIn + mSec*cpSec *tSecOut = q
If mSec = 0:
1. tSecIn - tSecOut = 0
Relations:
1. rq = q/qMx
2. qCombust = q/rEff(rq)
Comment: The peak load heater is controlled through setting the capacity step.

"Oil-fired boiler" description

This is a component model for a boiler that is incinerating oil or similar fuel for heating water or a brine. The component is set to an initial capacity that can changed by a connected control. The amount of oil supplied will be accordingly.

Condition:

1. mSec*cpSec*(tSecOut - tSecIn) = q
2. mOil*fvOil = q/rEff(q/qMx)
Equation:
1. -mSec*cpSec *tSecIn + mSec*cpSec *tSecOut = q
2. fvOil * mOil = q/rEff(q/qMx)
If mSec = 0:
1. tSecIn - tSecOut = 0
Relations:
1. rq = q/qMx
2. qCombust = q/rEff(rq)

"Electric boiler" description

This is a component model for a boiler based on electricity for heating a secondary fluid, normally water or a brine. The component is set to an initial capacity that can be changed by a connected control. The amount of power supplied will be accordingly.

Condition:

1. mSec*cp*(tSecOut - tSecIn) = q
2. rEff*wEl = q
where rEff = rEff(rQ), rQ = q/qMx

Equation:

1. -mSec*cp *tSecIn + mSec*cpSec *tSecOut            = q
2.                                        +rEff *wEl = q

If mSec = 0:

1. tSecIn - tSecOut = 0

"Mixing chamber and post heater" description

Equations:
1. tSecOut = tSecOut
2. mIn = mSecOut - mExt
3. mExt = (mSecOut*tSecOut - mIn*tSecIn)/tExtIn  , tSecIn > tSecOut
        = 0                                      , tSecIn <= tSecOut
Relations:
1. qIn = mSecOut*cp(tSecAv)*(tSecOut-tSecIn)  , tSecIn <= tSecOut
       = 0                                    , tSecIn > tSecOut
Comment: The component model could be used if you wish to define a temperature and mass flow rate somewhere in a secondary medium circuit. There must not be a pump in this circuit, because the mass flow rate is set by the component. If the temperature is too high, a medium of a lower temperature is added (tExtIn,mExt). The mass flow rate entering the component is correspondingly reduced. If the entry temperature on the other hand is too low, the necessary heat amount (qIn) is added to reach the correct value.

"Fully mixed storage tank" description

Condition:
cpSecOut*MAcc*(tAcc(next) - tAcc) = m*(cpSecIn*tSecIn - cpSecOut*tAcc(next)) *dTime
(Backward Euler integration)
Using:
rm      = m*dTime/MAcc
tSecOut = tAcc(next)
Equation:
1. -rm*cpSecIn/cpSecOut *tSecIn + (1+rm) *tSecOut = tAcc
Relation:
1. MAcc = V*densSec

"Heated mixed storage tank" description

Condition:
cpSecOut*MAcc*(tAcc(next) - tAcc) = (q + m*(cpSecIn*tSecIn - cpSecOut*tAcc(next))) *dTime
(Backward Euler integration)
Using:
rm      = m*dTime/MAcc
tSecOut = tAcc(next)
Equation:
1. -rm*cpSecIn/cpSecOut *tSecIn + (1+rm) *tSecOut = tAcc + q*dTime/(MAcc*cpSecOut)
Relation:
1. MAcc = V*densSec

"Stratified storage tank" description

The model is based upon considering a tank with stable fluid, i.e. no convection, neither free nor forced. The only mechanisms for temperature change is conduction and piston movement of the water. The heat conduction is a transient one-dimensional heat conduction with temperature dependent thermal properties. The boundary conditions use the inlet temperatures as ambient temperature and a high heat transfer coefficient when there is inlet flow, a low value of no inlet flow.

"Heated stratified storage tank" description

The model is based upon considering a tank with stable fluid, i.e. no convection, neither free nor forced. The only mechanisms for temperature change is conduction, piston movement of the water and (if specified) the internal heating in all or parts of the tank height. The heat conduction is a transient one-dimensional heat conduction with temperature dependent thermal properties. The boundary conditions use the inlet temperatures as ambient temperature and a high heat transfer coefficient when there is inlet flow, a low value of no inlet flow.

"1D heat source/sink" description

This is a model for one-dimensional transient heat condition. It connects to other components through it's two external boundaries and the number of active layer boundaries. A layer boundary is activated in the layer dialogue.

Boundaries are attached to each other by dragging one of the boundary components onto another one also with a boundary, and releasing the mouse button when the boundaries turns red. The component size normal to the heat flow is set through scaling (Edit+Move/Scale/Rotate + Y size scaling).

The enthalpical mean temperature is only calculated if the component consists of a single layer.

"Heat-conducting wall" description

This is a component model for a heat conducting slab, cylinder or sphere, ref. one-dimensional transient heat conduction calculation. Each of the two opposite boundaries can be connected to any other component with an active boundary.

"Zone (Temperature zone)" description

Version 2.6 This is a component model representing a polygonic enclosure, or zone, filled with a specific fluid (often air). The zone may exchange heat through each of the polygon sides if the individual side has an active heat exchanging boundary, otherwise it is adiabatic.

Any open secondary fluid connector inside the zone interacts with the enclosure: If it supplies fluid, the fluid heat adds to the total zone heat. If it sucks fluid, the connector temperature will be set to the zone temperature. In the latter case there must be a temperature boundary condition at the connector. The temperature value of this boundary condition will be overridden by the zone temperature.

A non-zero net mass flow will be drained or supplied by a special connector called "Infiltration". All connectors in the zone must carry the same type of fluid. If a secondary fluid connector with a different kind of fluid is dropped in the zone, the fluid will change to the zone fluid.

Conditions:

1. MZone*cpZone*(tZone-tZonePrv) = (SumCon(mSec*cpSec*(tSec-tZone)) + SumSide(area*HTC*(tSurf-tZone)+qDir))*dTime
2. MZone*(xHumZone-xHumZonePrv) = SumCon(mSec*(xHum-xHumZone))*dTime
Developing:
1. tZone*(MZone*cpZone + SumCon(mSec*cpSec)*dTime + SumSide(area*HTC)*dTime) = MZone*cpZone*tZonePrv + (SumCon(mSec*cpSec*tSec) + SumSide(area*HTC*tSurf+qDir))*dTime
2. xHumZone*(MZone + SumCon(mSec))*dTime = MZone*hHumZonePrv + SumCon(mSec*xHumSec)*dTime
Setting:
1. (MZone*cpZone + ASum*dTime)*tZone = MZone*cpZone*tZonePrv + BSum*dTime
2. (MZone + MSum*dTime)*xHumZone = MZone*xHumZonePrv + XSum*dTime
Setting: Equations:
1. (MZone*cpZone + ASum*dTime)* tZone = MZone*cpZone*tZonePrv + BSum*dTime
2. (MZone + MSum*dTime) *xHumZone = MZone*xHumZonePrv + XSum*dTime
Relations:
1. qInt = SumCon(mcpSec*(tSec-tZone) + mSec*(xHumSec-xHumZon)

"Temperature source" description

This is a model for getting a specific temperature as input to other components, as an alternative to using a boundary condition. Note! All unused outlets must be supplied with a mass flow rate boundary condition (or a pump), normally set to zero flow.

"Throttle valve" description

The valve is separating the pressure, represented by the dew-point temperature. No other variables change when passing the component.

This component model carries no mechanism for controlling the flow in order to have a specific superheat at exit of an evaporator. Please, use an enthalpy control for this purpose (Add+Control + Enthalpy control).

"Back-up valve" description

Equation:
1. tDPIn - tDPOut = 0       , tDPOut > tDPInMn (Open valve)
1. tDPIn          = tDPInMn , tDPOut < tDPInMn (Closed valve)
To avoid problems in switching between the two kinds of equations, tDPIn is stepped 1 K per iteration until reaching the other equation.

"Resistor for secondary fluid circuit" description

Condition:
1. pSecOut - pSecIn = -dpNom*(m/mSecNom)**2*sign(m)
With C1 = dpNom/mSecNom**2*sign(m) and linearizing round the current point:

Equation:

1. -pSecIn + pSecOut + 2*C1*mPrv *m = C1*mPrv**2
with mPrv being the previous value of m <> 0.

Relations:

1. dpSec = pSecIn - pSecOut

"Secondary fluid tube with pressure drop" description

Condition:
1. pSecOut - pSecIn = -C1*mSec**2
Equation:
1. -pSecIn + pSecOut + 2*C1*mSecPrv *mSec = C1*mSecPrv**2
with
C1    = C3*rFrict/densSec*sign(mSec)
C3    = 8*L/(Pi**2*lDiam**5)
and mSecPrv being the previous value of mSec <> 0.

With rRe = 4*mSec/(Pi*lDiam*dv) we use:

rFrict = 64/rRe                       , rRe < 2000
For smooth pipes:
rFrict = 0.3164*rRe**(-0.25)          , 3000 < rRe < 1.E5
rFrict = 0.0032 + 0.221*rRe**(-0.237) , rRe > 1.E5
For rough pipes:
1/sqrt(rFrict) = 1.14 - 2*log(rlRough + 9.3/(rRe*sqrt(rFrict)))  , 3000 < rRe < 2E4
rFrict = (1.14 + 2*log(1/rlRough))**(-2)                         , rRe > 2E4

We have rough pipes if rlRough > rlRoughMin with rlRoughMin = f(rRe) (given by ASHRAE)

With rRe in the region (2000 to 3000) it is interpolated between values for 2000 and 3000 to have a smooth transition between the laminar region and the transition region.

Relations:

1. dpSec = pSecIn - pSecOut

"Pipe with heat loss" description

Condition:
1. ua*(tSecIn-tBuf-(tSecOut-tBuf))/ln((tSecIn-tBuf)/(tSecOut-tBuf))
   = mcp*(tSecIn-tSecOut)
With R = exp(ua/mcp) we have:

Equation:

1. tSecIn -R *tSecOut = (1-R)*tExt
When abs(R-1) < 0.01 we use in stead (with sRfr = ua/(2*mcp)):
1. (1-sRfr) *tSecIn -(1+sRfr) *tSecOut = -2*sRfr*tBuf
If mSec = 0:
1. tSecOut = tExt
Relations:
 1. aInt = lDiamInt * Pi * lPipe
 2. aExt = lDiamExt * Pi * lPipe
 3. a = 0.5*(aInt + aExt)
 4. RInt = 1/(aInt*uInt)
 5. RExt = 1/(aExt*uExt)
 6. RPipe = ln(lDiamExt/lDiamInt)/(2*Pi*tcPipe*lPipe)  
 7. ua = 1/(RInt + RPipe + RExt)
 8. u = ua/a
 9. mcp    = mSec*cpSec(tSecAv)
10. rUAMC  = ua/mcp
11. q_     = mcp*(tSecIn-tSecOut)
12. dtLmtd = q_/ua
13. tSecAv = tExt+dtLmtd
14. q_a    = q_/aInt

"Resistor for refrigerant circuit" description

Condition:
1. R_PsatgasT(tDPOut) - R_PsatgasT(tDPIn) = -dpNom*(mRfr/mRfrNom)**2*sign(mRfr)
Equation:
1. tDPIn - tDPOut = C1/C2*mRfr**2
with
C1    = dpNom/mRfrNom**2*sign(mRfr)
C2    = (R_PsatgasT(tDPAv+dt)-R_PsatgasT(tDPAv))/dt
Relations:
1. tDPAv = 0.5*(tDPIn+tDPOut)
2. dp    = R_PsatgasT(tDPIn) - R_PsatgasT(tDPOut)
3. dtDP  = tDPIn - tDPOut

"Refrigerant tube with pressure drop" description

Condition:
1. R_PsatgasT(tDPOut) - R_PsatgasT(tDPIn) = -C1*mRfr**2
Equation:
1. tDPIn - tDPOut = C1/C2*mRfr**2
with
C1 = C3*rFrict/densRfr*sign(mRfr)
C2 = (R_PsatgasT(tDPAv+dt)-R_PsatgasT(tDPAv))/dt
C3 = 8*L/(Pi**2*lDiam**5)
With rRe = 4*mRfr/(Pi*lDiam*dv) we have:
rFrict = 64/rRe                       , rRe < 2000
For smooth pipes:
rFrict = 0.3164*rRe**(-0.25)          , 3000 < rRe < 1.E5
rFrict = 0.0032 + 0.221*rRe**(-0.237) , rRe > 1.E5
For rough pipes:
1/sqrt(rFrict) = 1.14 - 2*log(rlRough + 9.3/(rRe*sqrt(rEffVol)))  , 3000 < rRe < 2E4
rFrict = (1.14 + 2*log(1/rlRough))**(-2)                          , rRe > 2E4

We have rough pipes if rlRough > rlRoughMin with rlRoughMin = f(rRe) (given by ASHRAE)

With rRe in the region (2000 to 3000) it is interpolated between values for 2000 and 3000 to have a smooth transition between the laminar region and the transition region.

If mRfr = 0:

1. tDPIn - tDPOut = 0
Relations:
1. dpRfr = pRfrIn - pRfrOut
2. dtDP = tDPIn - tDPOut
Comment: The component model uses relations valid for one-phase refrigerants. It may formally be used also in the two-phase domain, but then accuracy will not be good.

"Secondary fluid tube with elevation" description

Equation:
1. pSecIn - pSecOut = densSec*Grav*dZ
with Grav being the gravity acceleration.

"Refrigerant tube with elevation" description

Conditions:
1. pRfrIn - pRfrOut = densRfr*Grav*dZ
with Grav being the gravity acceleration.
Linearizes pRfr = R_PsatgasT(tDP) = A_p + B_p*tDP
at tDP = tDPAv = 0.5*(tDPIn+tDPOut) giving:

Equation:

1. tDPIn - tDPOut = densRfr*Grav*pipEl/B_p

"Three-way valve for secondary fluid circuit" description

Conditions:
1. mSecOut1 = rmOut1*mIn
2. mSecOut2 = (1-rmOut1)*mIn
Equations:
1. rmOut1 *mSecIn - mSecOut1 = 0
2. (1-rmOut1)*mSecIn - mSecOut2 = 0

"Three-way valve for refrigerant circuit" description

Conditions:
1. mRfrOut1 = rmOut1*mRfrIn
2. mRfrOut2 = (1-rmOut1)*mRfrIn
Equations:
1. rmOut1    *mRfrIn - mRfrOut1            = 0
2. (1-rmOut1)*mRfrIn            - mRfrOut2 = 0

"T-manifold for secondary fluid circuit" description

Condition:
1. mSecIn = mSecOut1 + mSecOut2
Equation:
1. -mSecIn + mSecOut1 + mSecOut2 = 0

"T-header for secondary fluid circuit" description

Conditions:
1. mSecIn1*hRfrIn1+mSecIn2*hRfrIn2 = mSecOut*hRfrOut
2. mSecIn1+mSecIn2 = mSecOut
Linearizes the enthalpy round tSec = tSecOut:
hSec = cpSecOut*tSec + H0SecOut
The result is:

Equations:

1. mSecIn1*tSecIn1 + mSecIn2*tSecIn2 - mSecOut*tSecOut = 0
2. mSecIn1 + mSecIn2 - mSecOut = 0
If mSecOut = 0:
1. rm1 *tSecIn1 + (1-rm1) *tSecIn2 - mSecOut(previous) *tSecOut = 0
where
rm1 = mSecIn1(previous)/mSecOut(previous)

"T-manifold for refrigerant circuit" description

Condition:
1. mRfrIn = mRfrOut1 + mRfrOut2
Equation:
1. -mRfrIn + mRfrOut1 + mRfrOut2 = 0

"T-header for refrigerants circuit" description

Condition:
1. mRfrIn1*hRfrIn1+mRfrIn2*hRfrIn2 = mRfrOut*hRfrOut
Equation:
1. mRfrIn1*hRfrIn1 + mRfrIn2*hRfrIn2 - mRfrOut*hRfrOut = 0
If mRfrOut = 0:
1. rm1 *hRfrIn + (1-rm1) *hRfrIn2 - hRfrOut = 0
with
rm1 = mSecIn1(previous)/mSecOut(previous)
If mSecOut <> 0, however mSecIn1 = 0 or mSecIn2 = 0
mSecIn1 is set equal to 0.001*mSecIn1 respectively mSecIn2 equal to 0.001*mSecIn2
in the ordinary equations so that hRfrIn1 resp. hRfrIn2 is calculated.

"T-header for humid air" description

Conditions:
1. mHumIn1*hHumIn1 + mHumIn2*hHumIn2 = mHumOut*hHumOut
2. mHumIn1*xHumIn1 + mHumIn2*xHumIn2 = mHumOut*xHumOut
3. mHumIn1 + mHumIn2 = mHumOut
Linearizing hHum = HX_H_tx(t,x) = A + B*t + C*x disregarding the product term D*t*x from the vapour heat capacity. Since the C*x term in eq. 1 will be satisfied by eq. 2 and term A by eq. 3, we only need the B*t term.

From this:

Equations:

1. mHumIn1*BIn1*tHumIn1 + BIn2*tHumIn2 - mHumOut*BOut*tHumOut = 0
2. mHumIn1*xHumIn1 + mHumIn2*xHumIn2 - mHumOut*xHumOut = 0
3. mHumIn1 + mHumIn2 - mHumOut = 0
If mHumOut = 0:
1. tHumIn1 + rm2 *tHumIn2 -(1+rm2) *tHumOut = 0
with rm2 = (tHumOut-tHumIn1)/(tHumIn2-tHumOut)

"T-header for power" description

Condition:
1. wIn1 + wIn2 = wOut
Equation:
1. wIn1 + wIn2 - wOut = 0

"Manifold for secondary fluid circuit" description

Condition:
1. mSecOut = nParal * mSecIn
with nParal being the number of parallels.

Equation:

1. nParal *mSecIn - mSecOut = 0

"Header for secondary fluid circuit" description

Condition:
1. mSecIn = nParal * mSecOut
with nParal being the number of parallels.
Equation:
1. mSecIn - nParal *mSecOut = 0

"Simple building" description

This is a simplistic model for setting the energy demand of a house. The house is supposed to be connected to a district heating network, so data for the exchange with this must be supplied. If the house is not connected, just set heat transfer area to 0. Then each additional type of energy supply is specified.

Conditions:

1. wEl = wElDem(Time)
2. mOil = qOilDem(Time) / (fvOil*rEffOil)
3. mBio = qBioDem(Time) / (fvBio*rEffBio)
4. uDH*aDH*(tDHIn-tIndoor-(tDHOut- tIndoor))/ln((tDHIn- tIndoor)/(tDHOut- tIndoor))
   = mDH*cp*(tDHIn-tDHOut), tIndoor = tIndoor(Time)
Equations:
1. wEl = wElDem(Time)
2. mOil = qOil/(rFuelOil*rEffOil)
3. mBio = qBio/(rFuelBio*rEffBio)
4. tDHIn -R *tDHOut = (1-R)*tIndoor
with

R = exp(uDH*aDH/mcpDH)

When abs(R-1) < 0.01 we use in stead (with s = ua/(2*mcp)):

1. (1-s) *tDHIn -(1+s) *tDHOut = -2*sDH*tIndoor
If mSec = 0:
1. tSecOut = tIndoor

Relations: 1. qDH = mDH*(tDHIn - tDHOut) 2. qTot = wElDem+ qOilDem + qBioDem + qDH 3. qTotAll = qTot*nBld

District heating/cooling is modelled as a simple heat exchange vs. a fixed time varying function.


"Residential house" description

Conditions:
1. qHeat = QHeat*aBld*(tIn-tOut) * nBld
2. qTot = qHeat + (QTW*nResid + WAppl*aBld + QRad*nWnd)*nBld
3. wEl = qTot * rEl
4. mOil*rFuelOil*etaOil = qHeat*rOil
5. mBio*rFuelBio*etaBio = qHeat*rBio
6. uDH*raDH*aBld*(tDHIn-tAirIn-(tDHOut-tAirIn))/ln((tDHIn-tAirIn)/(tDHOut-tAirIn))
   = mcp*(tSHIn-tDHOut)

Equations:

1. wEl = qTot*rEl
2. mOil = qTot*rOil/(rFuelOil*etaOil)
3. mBio = qTot*rBio/(rFuelBio*etaBio)
4. tDHIn -R *tDHOut = (1-R)*tAirIn
with
qTot = (QHeat*aBld*(tIn-tOut) + QTW*nResid + WAppl*aBld + QRad*nWnd)*nBld
and
R = exp(ua/mcp)

When abs(R-1) < 0.01 we use in stead (with sRfr = ua/(2*mcp)):

1. (1-sRfr) *tSecIn -(1+sRfr) *tSecOut = -2*sRfr*tBuf
If mSec = 0:
1. tSecOut = tBuf

DH modelleres som en enkel varmeveksler mot fast tAirIn. Flaten aDH = aBld * raDH Resten av qHeat må dekkes av El, Oil eller Bio. Det forutsettes at TW og Appl bare bruker El. Bør også ha en enkel AC-modell. Solkollektor og solceller kan inkorporeres ved å redusere QHeat-verdien.

"Illustrative valve for secondary fluid circuit" description

Comment: You use this component model if you wish to add a valve in a secondary medium circuit with no modelling impact, only to serve as an illustration. It has a lot of representing symbols.

"Illustrative valve for refrigerant circuit" description

Comment: You use this component model if you wish to add a valve in a refrigerant circuit with no modelling impact, only to serve as an illustration. It has a lot of representing symbols.

"Illustrative filter for secondary fluid circuit" description

Comment: You use this component model if you wish to add a filter in a secondary medium circuit with no modelling impact, only to serve as an illustration. It has a lot of representing symbols.

"Illustrative filter for refrigerant circuit" description

Comment: You use this component model if you wish to add a filter in a refrigerant circuit with no modelling impact, only to serve as an illustration. It has a lot of representing symbols.

"Measuring device for refrigerant circuit" description

Comment: You use this component model if you need to know certain thermodynamic quantities at specific locations in the plant, e.g. for exergy analysis.

"Temperature adapter for secondary fluid circuit" description

Comment: Separates the temperature, keeping all other variables.

"Pressure adapter for secondary fluid circuit" description

Comment: Separates the pressure, keeping all other variables.

"Mass flow adapter for secondary fluid circuit" description

Comment: Separates the mass flow rate, keeping all other variables.

"Humidity adapter for secondary fluid circuit" description

Comment: Separates the fraction, keeping all other variables.

"Dew-point temp. adapter for refrigerant circuit" description

Comment: Separates the dew-point temperatures, keeping all other variables.

"Enthalpy adapter for refrigerant circuit" description

Comment: Separates the enthalpy, keeping all other variables.

"Mass flow adapter for refrigerant circuit" description

Comment: Separates the mass flow rate, keeping all other variables.

"Power adapter for power circuit" description

Comment: Separates the power.

FrigoSim Home Page