内存问题代码 [英] Memory Issues with code

查看:81
本文介绍了内存问题代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Azure Web App出现问题,网站工作正常,直到我尝试使用计算器,这是我得到CGI应用程序错误和502.3错误的网关错误。这是
计算器的代码。我正在引用关于502.3的benjamin perkins帖子并看到一些调整代码的建议,但我不明白如何将这些代码实现到我的网络应用程序中。 非常感谢您的帮助!



解决方案

public async Task< IActionResult>编辑(int id,[Bind(" ID,OwnerID,windowsqft,windowide,windowtype,windowoperation,windowglasstype,windowframetype,windowufactor,windowheight,windowwidth,windowquantity,windowpanes,windowEAT,Tx,Fshd,PXI,SHGC,IAC,FFs, CF")]
开窗式开窗)

  &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(!ModelState.IsValid)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;返回查看(开窗);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userFenestrationItem = await _context.Fenestration.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User)&& m.ID == id);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userFenestration = await _context.Fenestration.Where(m => m.OwnerID == _userManager.GetUserId(User))。ToListAsync();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; userFenestration = userFenestration.Where(Fenestration => Fenestration.ID!= fenestration.ID)。ToList();



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(userFenestrationItem == null)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; return NotFound();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var fenestrationTable =来自_infoContext.FenestrationTable中的f选择f;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; HomeProfile userhomeprofile = await _context.HomeProfile.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userzipcodeinfo = await _locationdbcontext.ZipCodeData.SingleOrDefaultAsync(m => m.ZipCode == userhomeprofile.Zipcode);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Envelope userenvelope = await _context.Envelope.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; HomeData userhomedata = await _context.HomeData.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; HeatCool userheatcool = await _context.HeatCool.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));
$


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var uvalues = EnvelopeCalcs.ULookup(userhomeprofile);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var totalFenestrationU = new decimal();



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var currentsched = new decimal [24];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var proposedsched = new decimal [] {userhomedata.Hour00Occ,userhomedata.Hour01Occ,userhomedata.Hour02Occ,userhomedata.Hour03Occ,userhomedata.Hour04Occ,userhomedata.Hour05Occ,userhomedata.Hour06Occ,userhomedata.Hour07Occ,
userhomedata.Hour08Occ,userhomedata。 Hour09Occ,userhomedata.Hour10Occ,userhomedata.Hour11Occ,userhomedata.Hour12Occ,userhomedata.Hour13Occ,userhomedata.Hour14Occ,userhomedata.Hour15Occ,userhomedata.Hour16Occ,userhomedata.Hour17Occ,userhomedata.Hour18Occ,
userhomedata.Hour19Occ,userhomedata.Hour20Occ, userhomedata.Hour21Occ,userhomedata.Hour22Occ,userhomedata.Hour23Occ};
$


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(userhomeprofile.ThermoSchedule == YesNo.Yes)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; currentched = proposedsched;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则if(userhomeprofile.ThermoSchedule == YesNo.No)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; currentsched = new decimal [] {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ,1,1}};

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //添加你和shgc

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration = await EnvelopeCalcs.UandSHCGFactorCalc(fenestration,fenestrationTable);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration.Tx = UpdatedHeatCoolCalcs.ExteriorAttachmentTransmission(fenestration.windowEAT);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration.windowsqft = fenestration.windowheight * fenestration.windowwidth * fenestration.windowquantity / 144m;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration.FFs = UpdatedHeatCoolCalcs.FenestrationSolarLoadFactor(UpdatedHeatCoolCalcs.windowOrientation(fenestration,userenvelope),userhomeprofile.HouseType);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration.IAC = UpdatedHeatCoolCalcs.IAC();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration.Fshd = UpdatedHeatCoolCalcs.Fshd(UpdatedHeatCoolCalcs.ShadeLineFactor(userzipcodeinfo.Latitude,UpdatedHeatCoolCalcs.windowOrientation(fenestration,userenvelope)),fenestration.windowheight / 12m);



  ; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var heatcoolsavings = await _context.HeatCoolSavings.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));
$


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; userFenestration.Add(门窗);
$


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //这需要以平方英尺来划分吗?

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; foreach(userFenestration中的var窗口)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; totalFenestrationU = totalFenestrationU +(window.windowufactor * window.windowsqft);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; // calcs

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; int coolingbalance = 65;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; int heatingbalance = 55;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userweatherbin = WeatherBin(userhomeprofile.WeatherStation);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; IDictionary< int,decimal> WMOdata =新词典< int,decimal>();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; foreach(_locationdbcontext.TauBlookup中的var位置)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TauLoc = await _locationdbcontext.TauBlookup.SingleOrDefaultAsync(m => m.Wmoid == location.Wmoid);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; decimal latdif = Convert.ToDecimal(Math.Abs​​(userzipcodeinfo.Latitude - TauLoc.Lat));

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; decimal longdif = Convert.ToDecimal(Math.Abs​​(userzipcodeinfo.Longitute - TauLoc.Long));

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; decimal distance = Convert.ToDecimal(Math.Sqrt(Math.Pow(Convert.ToDouble(latdif),2)+ Math.Pow(Convert.ToDouble(longdif),2)));

  ; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; WMOdata.Add(TauLoc.Wmoid,distance);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; userhomeprofile.WMOid = WMOdata.SingleOrDefault(x => x.Value == WMOdata.Values.Min())。Key;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TauBData = await _locationdbcontext.TauBlookup.SingleOrDefaultAsync(m => m.Wmoid == userhomeprofile.WMOid);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TauDData = await _locationdbcontext.TauDlookup.SingleOrDefaultAsync(m => m.Wmoid == userhomeprofile.WMOid);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //开始用户加热计算

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var heatingdt = UpdatedHeatCoolCalcs.HeatingDT(userheatcool,userweatherbin);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; // 8米是每层八层。检查以确保这是通用高度假设。

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //在外面加或不加。

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userwallsqft = UpdatedHeatCoolCalcs.WallSqft(userenvelope,userhomeprofile);
$


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userwindowsqft = new decimal();



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; foreach(userFenestration中的var窗口)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; userwindowsqft = userwindowsqft + window.windowsqft;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; totalFenestrationU = totalFenestrationU / userwindowsqft;



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //需要添加门



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userceilingsqft = new decimal();



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(userenvelope.RoofType == Lists.CeilingRoofType.anotherunit || userenvelope.RoofType == Lists.CeilingRoofType.Select)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; userceilingsqft = 0m;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; userceilingsqft = userenvelope.Side1length * userenvelope.Side2length;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userfloorsqft = userenvelope.Side1length * userenvelope.Side2length;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userfloorperim = userenvelope.Side1length + userenvelope.Side2length + userenvelope.Side3length + userenvelope.Side4length;



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var heatloadenv = UpdatedHeatCoolCalcs.HeatingLoadEnvelope(heatingdt,uvalues,totalFenestrationU,userwallsqft,userwindowsqft,userceilingsqft,userfloorsqft,userfloorperim);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var Cs = UpdatedHeatCoolCalcs.Cs(TauBData.Elevation);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var userdraft = HeatCoolCalcs.AirInfiltrationRating(userenvelope.Draft);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //每层8英尺

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var exposedsqft = UpdatedHeatCoolCalcs.ExposedSqft(userenvelope,userhomeprofile);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var heatloadinfvent = UpdatedHeatCoolCalcs.HeatingLoadInfVent(heatingdt,Cs,userfloorsqft,userhomeprofile.Bedrooms,exposedsqft,userdraft,userhomeprofile.Floors);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var ductlossvalues = UpdatedHeatCoolCalcs.DuctLossGainFactor(userhomeprofile.Floors,userenvelope.VentSpace,userenvelope.HeatType);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var internalgain = UpdatedHeatCoolCalcs.InternalGain(userfloorsqft,userhomeprofile.Occupancy);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //每月BTU出来,需要转换+安全系数(.9或.8)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var currentHeatLoadTot = UpdatedHeatCoolCalcs.HeatLoadTotal(heatloadenv,heatloadinfvent,currentsched,ductlossvalues [1],internalgain);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var proposedHeatLoadTot = UpdatedHeatCoolCalcs.HeatLoadTotal(heatloadenv,heatloadinfvent,proposedsched,ductlossvalues [1],internalgain);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; // sun / PXI calcs



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //启动SunPop跳过

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; / *

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TauB = SunCalcs.EveryDayTauB(TauBData);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TauD = SunCalcs.EveryDayTauD(TauDData);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;十进制[] ab =新十进制[365];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;十进制[] ad =新十进制[365];



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int d = 0; d< 365; d ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ab [d] = 1.454m - (0.406m * TauB [d]) - (0.268m * TauD [d])+(0.021m * TauB [d] * TauD [d]);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int d = 0; d< 365; d ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ad [d] = 0.507m +(0.205m * TauB [d]) - (0.08m * TauD [d]) - (0.19m * TauB [d] * TauD [d]);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var Eo = SunCalcs.EoClearSkySolarRad();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var EqnOfTime = SunCalcs.EquationOfTime();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var SolarDec = SunCalcs.SolarDecline();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var LSM = SunCalcs.LSM(userzipcodeinfo.Timezone);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var AppSolarTime = SunCalcs.ApparentSolarTime(EqnOfTime,userzipcodeinfo.Longitute,LSM);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var HourAngle = SunCalcs.HourAngle(AppSolarTime);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var SinB = SunCalcs.SinB(userzipcodeinfo.Latitude,SolarDec,HourAngle);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var SolarAltAngleRad = SunCalcs.SolarAltAngleRad(SinB);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var SolarAltAngleDeg = SunCalcs.SolarAltAngleDeg(SolarAltAngleRad);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var airmass = SunCalcs.AirMass(SinB,SolarAltAngleDeg);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var Ed = SunCalcs.EdCalc(SinB,Eo,TauD,airmass,ad);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var Eb = SunCalcs.EbCalc(SinB,Eo,TauB,airmass,ab);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var SinSolarAz = SunCalcs.SinSolarAzimuthCalc(HourAngle,SolarDec,SolarAltAngleRad);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var SolarAzAng = SunCalcs.SolarAzimuthAngleCalc(SinSolarAz);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var SurfaceSolarAzAng = SunCalcs.SurfaceSolarAzimuthAngCalc(SolarAzAng,userenvelope);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var IncidenceAng = SunCalcs.IncidenceAngleCalc(SinB,SurfaceSolarAzAng,SolarAltAngleRad);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var DirectionalTb = SunCalcs.DirectionalTbCalc(IncidenceAng,Eb);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var Y = SunCalcs.YCalc(IncidenceAng);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var DirectionalTd = SunCalcs.DirectionalTdCalc(Y,Ed);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //结束太阳计算



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TbHourMonth = UpdatedHeatCoolCalcs.Tsummer(DirectionalTb);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TdHourMonth = UpdatedHeatCoolCalcs.Tsummer(DirectionalTd);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; * / b
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; // IAC目前是固定值。 可以/应该在未来进行改进以获得更高级的计算。



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TbHourMonth = SideTBArray(userenvelope.Side1direction,userenvelope.Side2direction,userenvelope.Side3direction,userenvelope.Side4direction,userhomeprofile.WMOid);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var TdHourMonth = SideTDArray(userenvelope.Side1direction,userenvelope.Side2direction,userenvelope.Side3direction,userenvelope.Side4direction,userhomeprofile.WMOid);




&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //冷却计算

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var coolingDT = UpdatedHeatCoolCalcs.CoolingDT(userheatcool,userweatherbin);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var windowCoolingLoad = new decimal [12,24];
$


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; foreach(userFenestration中的var窗口)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var windowEB = new decimal [12,24];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var windowED =新小数[12,24];



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(window.windowside == Lists.Sid​​e.Side1)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int m = 0; m <12; m ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int h = 0; h <24; h ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowEB [m,h] = TbHourMonth [m,h,0];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowED [m,h] = TdHourMonth [m,h,0];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则if(window.windowside == Lists.Sid​​e.Side2)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int m = 0; m <12; m ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int h = 0; h <24; h ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowEB [m,h] = TbHourMonth [m,h,1];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowED [m,h] = TdHourMonth [m,h,1];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则if(window.windowside == Lists.Sid​​e.Side3)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int m = 0; m <12; m ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int h = 0; h <24; h ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowEB [m,h] = TbHourMonth [m,h,2];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowED [m,h] = TdHourMonth [m,h,2];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则if(window.windowside == Lists.Sid​​e.Side4)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int m = 0; m <12; m ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int h = 0; h <24; h ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowEB [m,h] = TbHourMonth [m,h,3];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowED [m,h] = TdHourMonth [m,h,3];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowED = UpdatedHeatCoolCalcs.HourMonthAvg(windowED);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowEB = UpdatedHeatCoolCalcs.HourMonthAvg(windowEB);
$


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var WCL = UpdatedHeatCoolCalcs.fenestrationCooling(window,coolingDT,userenvelope,windowED,windowEB,userweatherbin);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int m = 0; m <12; m ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; for(int h = 0; h <24; h ++)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; windowCoolingLoad [m,h] = windowCoolingLoad [m,h] + WCL [m,h];

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //潜伏还可以,天花板可能?,infvent好,墙可以正常价值
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //离开地板



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var coolloadinfvent = UpdatedHeatCoolCalcs.CoolingLoadInfVent(coolingDT,Cs,userfloorsqft,userhomeprofile.Bedrooms,exposedsqft,userdraft,userhomeprofile.Floors);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var coolloadwall = UpdatedHeatCoolCalcs.CoolingWallLoad(userweatherbin,userenvelope,uvalues.FrameWallU,coolingDT,userwallsqft-userwindowsqft);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var coolloadceiling = UpdatedHeatCoolCalcs.CoolingCeilingLoad(userenvelope,uvalues.CeilingU,coolingDT,userceilingsqft,userweatherbin);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var coolloadfloor = UpdatedHeatCoolCalcs.CoolingFloorLoad(userweatherbin,userenvelope,uvalues.FloorU,coolingDT,userfloorsqft);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var coolloadlatent = UpdatedHeatCoolCalcs.coolingLatentLoad(coolingDT,userfloorsqft,userhomeprofile.Bedrooms,exposedsqft,userdraft,userhomeprofile.Floors);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var occbtu = userhomeprofile.Occupancy * 350m;



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var currentCoolingLoadTot = UpdatedHeatCoolCalcs.coolingLoadTotal(windowCoolingLoad,coolloadinfvent,coolloadwall,coolloadceiling,coolloadfloor,coolloadlatent,ductlossvalues,occbtu,currentsched,userweatherbin,
coolingbalance);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var proposedCoolingLoadTot = UpdatedHeatCoolCalcs.coolingLoadTotal(windowCoolingLoad,coolloadinfvent,coolloadwall,coolloadceiling,coolloadfloor,coolloadlatent,ductlossvalues,occbtu,proposedsched,userweatherbin,
coolingbalance);

$
&NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; heatcoolsavings = UpdatedHeatCoolCalcs.HeatCoolSavingsDBDump(currentCoolingLoadTot,proposedCoolingLoadTot,currentHeatLoadTot,proposedHeatLoadTot,heatcoolsavings,userheatcool.HeatingFuel,userheatcool.CoolingSEER);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration.OwnerID = _userManager.GetUserId(User);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; var isAuthorized = await _authorizationService.AuthorizeAsync(User,fenestration,GreenrUserOperations.Update);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(!isAuthorized.Succeeded)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;返回新的ChallengeResult();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; fenestration = ViewModel_to_model(userFenestrationItem,fenestration);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(ModelState.IsValid)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;试试
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; _context.HeatCoolSavings.Update(heatcoolsavings);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; _context.Fenestration.Update(门窗);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; await _context.SaveChangesAsync();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; catch(DbUpdateConcurrencyException)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; if(!FenestrationExists(fenestration.ID))

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; return NotFound();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;否则

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;扔;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; return RedirectToAction(" Index");

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; }¥b $ b  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;返回查看(开窗);

  &NBSP; &NBSP; &NBSP; }


  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;&NBSP;

I'm having an issue with my Azure Web App, the website is working fine until I try to use the calculator, which is when I get an CGI application error and 502.3 bad gateway error. Here's the code for the calculator. I'm referencing benjamin perkins post regarding 502.3 and see some suggestions for making adjustments to the code but I don't understand how to implement this code into my web app.  Thank you very much for any help!

解决方案

public async Task<IActionResult> Edit(int id, [Bind("ID,OwnerID,windowsqft,windowside,windowtype,windowoperation,windowglasstype,windowframetype,windowufactor,windowheight,windowwidth,windowquantity,windowpanes,windowEAT,Tx,Fshd,PXI,SHGC,IAC,FFs,CF")] Fenestration fenestration)
        {
            if (!ModelState.IsValid)
            {
                return View(fenestration);
            }

            var userFenestrationItem = await _context.Fenestration.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User) && m.ID == id);
            var userFenestration = await _context.Fenestration.Where(m => m.OwnerID == _userManager.GetUserId(User)).ToListAsync();
            userFenestration = userFenestration.Where(Fenestration => Fenestration.ID != fenestration.ID).ToList();

            if (userFenestrationItem == null)
            {
                return NotFound();
            }

            var fenestrationTable = from f in _infoContext.FenestrationTable select f;
            HomeProfile userhomeprofile = await _context.HomeProfile.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));
            var userzipcodeinfo = await _locationdbcontext.ZipCodeData.SingleOrDefaultAsync(m => m.ZipCode == userhomeprofile.Zipcode);
            Envelope userenvelope = await _context.Envelope.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));
            HomeData userhomedata = await _context.HomeData.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));
            HeatCool userheatcool = await _context.HeatCool.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));

            var uvalues = EnvelopeCalcs.ULookup(userhomeprofile);
            var totalFenestrationU = new decimal();

            var currentsched = new decimal[24];
            var proposedsched = new decimal[] { userhomedata.Hour00Occ, userhomedata.Hour01Occ, userhomedata.Hour02Occ, userhomedata.Hour03Occ, userhomedata.Hour04Occ, userhomedata.Hour05Occ, userhomedata.Hour06Occ, userhomedata.Hour07Occ, userhomedata.Hour08Occ, userhomedata.Hour09Occ, userhomedata.Hour10Occ, userhomedata.Hour11Occ, userhomedata.Hour12Occ, userhomedata.Hour13Occ, userhomedata.Hour14Occ, userhomedata.Hour15Occ, userhomedata.Hour16Occ, userhomedata.Hour17Occ, userhomedata.Hour18Occ, userhomedata.Hour19Occ, userhomedata.Hour20Occ, userhomedata.Hour21Occ, userhomedata.Hour22Occ, userhomedata.Hour23Occ };

            if (userhomeprofile.ThermoSchedule == YesNo.Yes)
            {
                currentsched = proposedsched;
            }
            else if (userhomeprofile.ThermoSchedule == YesNo.No)
            {
                currentsched = new decimal[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
            }

            // adds u and shgc
            fenestration = await EnvelopeCalcs.UandSHCGFactorCalc(fenestration, fenestrationTable);
            fenestration.Tx = UpdatedHeatCoolCalcs.ExteriorAttachmentTransmission(fenestration.windowEAT);
            fenestration.windowsqft = fenestration.windowheight * fenestration.windowwidth * fenestration.windowquantity / 144m;
            fenestration.FFs = UpdatedHeatCoolCalcs.FenestrationSolarLoadFactor(UpdatedHeatCoolCalcs.windowOrientation(fenestration, userenvelope), userhomeprofile.HouseType);
            fenestration.IAC = UpdatedHeatCoolCalcs.IAC();
            fenestration.Fshd = UpdatedHeatCoolCalcs.Fshd(UpdatedHeatCoolCalcs.ShadeLineFactor(userzipcodeinfo.Latitude, UpdatedHeatCoolCalcs.windowOrientation(fenestration, userenvelope)), fenestration.windowheight / 12m);

            var heatcoolsavings = await _context.HeatCoolSavings.SingleOrDefaultAsync(m => m.OwnerID == _userManager.GetUserId(User));

            userFenestration.Add(fenestration);

            // does this need to be divded by sq ft?
            foreach (var window in userFenestration)
            {
                totalFenestrationU = totalFenestrationU + (window.windowufactor * window.windowsqft);
            }

            // calcs
            int coolingbalance = 65;
            int heatingbalance = 55;
            var userweatherbin = WeatherBin(userhomeprofile.WeatherStation);
            IDictionary<int, decimal> WMOdata = new Dictionary<int, decimal>();
            foreach (var location in _locationdbcontext.TauBlookup)
            {
                var TauLoc = await _locationdbcontext.TauBlookup.SingleOrDefaultAsync(m => m.Wmoid == location.Wmoid);
                decimal latdif = Convert.ToDecimal(Math.Abs(userzipcodeinfo.Latitude - TauLoc.Lat));
                decimal longdif = Convert.ToDecimal(Math.Abs(userzipcodeinfo.Longitute - TauLoc.Long));
                decimal distance = Convert.ToDecimal(Math.Sqrt(Math.Pow(Convert.ToDouble(latdif), 2) + Math.Pow(Convert.ToDouble(longdif), 2)));
                WMOdata.Add(TauLoc.Wmoid, distance);
            }
            userhomeprofile.WMOid = WMOdata.SingleOrDefault(x => x.Value == WMOdata.Values.Min()).Key;
            var TauBData = await _locationdbcontext.TauBlookup.SingleOrDefaultAsync(m => m.Wmoid == userhomeprofile.WMOid);
            var TauDData = await _locationdbcontext.TauDlookup.SingleOrDefaultAsync(m => m.Wmoid == userhomeprofile.WMOid);

            // begin user heating calcs
            var heatingdt = UpdatedHeatCoolCalcs.HeatingDT(userheatcool, userweatherbin);

            // 8m is the eight of each floor. check to make sure this is the universal height assumption.
            // add in outside facing or not.
            var userwallsqft = UpdatedHeatCoolCalcs.WallSqft(userenvelope, userhomeprofile);

            var userwindowsqft = new decimal();

            foreach (var window in userFenestration)
            {
                userwindowsqft = userwindowsqft + window.windowsqft;
            }

            totalFenestrationU = totalFenestrationU / userwindowsqft;

            // need to add doors

            var userceilingsqft = new decimal();

            if (userenvelope.RoofType == Lists.CeilingRoofType.anotherunit || userenvelope.RoofType == Lists.CeilingRoofType.Select)
            {
                userceilingsqft = 0m;
            }
            else
            {
                userceilingsqft = userenvelope.Side1length * userenvelope.Side2length;
            }

            var userfloorsqft = userenvelope.Side1length * userenvelope.Side2length;
            var userfloorperim = userenvelope.Side1length + userenvelope.Side2length + userenvelope.Side3length + userenvelope.Side4length;

            var heatloadenv = UpdatedHeatCoolCalcs.HeatingLoadEnvelope(heatingdt, uvalues, totalFenestrationU, userwallsqft, userwindowsqft, userceilingsqft, userfloorsqft, userfloorperim);

            var Cs = UpdatedHeatCoolCalcs.Cs(TauBData.Elevation);

            var userdraft = HeatCoolCalcs.AirInfiltrationRating(userenvelope.Draft);
            // 8ft per floor
            var exposedsqft = UpdatedHeatCoolCalcs.ExposedSqft(userenvelope, userhomeprofile);

            var heatloadinfvent = UpdatedHeatCoolCalcs.HeatingLoadInfVent(heatingdt, Cs, userfloorsqft, userhomeprofile.Bedrooms, exposedsqft, userdraft, userhomeprofile.Floors);

            var ductlossvalues = UpdatedHeatCoolCalcs.DuctLossGainFactor(userhomeprofile.Floors, userenvelope.VentSpace, userenvelope.HeatType);

            var internalgain = UpdatedHeatCoolCalcs.InternalGain(userfloorsqft, userhomeprofile.Occupancy);

            //comes out as monthly BTU, needs to be converted + safety factor (.9 or .8)
            var currentHeatLoadTot = UpdatedHeatCoolCalcs.HeatLoadTotal(heatloadenv, heatloadinfvent, currentsched, ductlossvalues[1], internalgain);
            var proposedHeatLoadTot = UpdatedHeatCoolCalcs.HeatLoadTotal(heatloadenv, heatloadinfvent, proposedsched, ductlossvalues[1], internalgain);

            //sun/PXI calcs

            // start SunPop skip
            /*
            var TauB = SunCalcs.EveryDayTauB(TauBData);
            var TauD = SunCalcs.EveryDayTauD(TauDData);

            decimal[] ab = new decimal[365];
            decimal[] ad = new decimal[365];

            for (int d = 0; d < 365; d++)
            {
                ab[d] = 1.454m - (0.406m * TauB[d]) - (0.268m * TauD[d]) + (0.021m * TauB[d] * TauD[d]);
            }

            for (int d = 0; d < 365; d++)
            {
                ad[d] = 0.507m + (0.205m * TauB[d]) - (0.08m * TauD[d]) - (0.19m * TauB[d] * TauD[d]);
            }

            var Eo = SunCalcs.EoClearSkySolarRad();
            var EqnOfTime = SunCalcs.EquationOfTime();
            var SolarDec = SunCalcs.SolarDecline();
            var LSM = SunCalcs.LSM(userzipcodeinfo.Timezone);
            var AppSolarTime = SunCalcs.ApparentSolarTime(EqnOfTime, userzipcodeinfo.Longitute, LSM);
            var HourAngle = SunCalcs.HourAngle(AppSolarTime);
            var SinB = SunCalcs.SinB(userzipcodeinfo.Latitude, SolarDec, HourAngle);
            var SolarAltAngleRad = SunCalcs.SolarAltAngleRad(SinB);
            var SolarAltAngleDeg = SunCalcs.SolarAltAngleDeg(SolarAltAngleRad);
            var airmass = SunCalcs.AirMass(SinB, SolarAltAngleDeg);
            var Ed = SunCalcs.EdCalc(SinB, Eo, TauD, airmass, ad);
            var Eb = SunCalcs.EbCalc(SinB, Eo, TauB, airmass, ab);
            var SinSolarAz = SunCalcs.SinSolarAzimuthCalc(HourAngle, SolarDec, SolarAltAngleRad);
            var SolarAzAng = SunCalcs.SolarAzimuthAngleCalc(SinSolarAz);
            var SurfaceSolarAzAng = SunCalcs.SurfaceSolarAzimuthAngCalc(SolarAzAng, userenvelope);
            var IncidenceAng = SunCalcs.IncidenceAngleCalc(SinB, SurfaceSolarAzAng, SolarAltAngleRad);
            var DirectionalTb = SunCalcs.DirectionalTbCalc(IncidenceAng, Eb);
            var Y = SunCalcs.YCalc(IncidenceAng);
            var DirectionalTd = SunCalcs.DirectionalTdCalc(Y, Ed);
            //end sun calcs

            var TbHourMonth = UpdatedHeatCoolCalcs.Tsummer(DirectionalTb);
            var TdHourMonth = UpdatedHeatCoolCalcs.Tsummer(DirectionalTd);
            */
            // IAC is currently fixed values.  can/should be improved in hte future for a more advanced calc.

            var TbHourMonth = SideTBArray(userenvelope.Side1direction, userenvelope.Side2direction, userenvelope.Side3direction, userenvelope.Side4direction, userhomeprofile.WMOid);
            var TdHourMonth = SideTDArray(userenvelope.Side1direction, userenvelope.Side2direction, userenvelope.Side3direction, userenvelope.Side4direction, userhomeprofile.WMOid);


            // cooling calcs
            var coolingDT = UpdatedHeatCoolCalcs.CoolingDT(userheatcool, userweatherbin);
            var windowCoolingLoad = new decimal[12, 24];

            foreach (var window in userFenestration)
            {
                var windowEB = new decimal[12, 24];
                var windowED = new decimal[12, 24];

                if (window.windowside == Lists.Side.Side1)
                {
                    for (int m = 0; m < 12; m++)
                    {
                        for (int h = 0; h < 24; h++)
                        {
                            windowEB[m, h] = TbHourMonth[m, h, 0];
                            windowED[m, h] = TdHourMonth[m, h, 0];
                        }
                    }
                }
                else if (window.windowside == Lists.Side.Side2)
                {
                    for (int m = 0; m < 12; m++)
                    {
                        for (int h = 0; h < 24; h++)
                        {
                            windowEB[m, h] = TbHourMonth[m, h, 1];
                            windowED[m, h] = TdHourMonth[m, h, 1];
                        }
                    }
                }
                else if (window.windowside == Lists.Side.Side3)
                {
                    for (int m = 0; m < 12; m++)
                    {
                        for (int h = 0; h < 24; h++)
                        {
                            windowEB[m, h] = TbHourMonth[m, h, 2];
                            windowED[m, h] = TdHourMonth[m, h, 2];
                        }
                    }
                }
                else if (window.windowside == Lists.Side.Side4)
                {
                    for (int m = 0; m < 12; m++)
                    {
                        for (int h = 0; h < 24; h++)
                        {
                            windowEB[m, h] = TbHourMonth[m, h, 3];
                            windowED[m, h] = TdHourMonth[m, h, 3];
                        }
                    }
                }

                windowED = UpdatedHeatCoolCalcs.HourMonthAvg(windowED);
                windowEB = UpdatedHeatCoolCalcs.HourMonthAvg(windowEB);

                var WCL = UpdatedHeatCoolCalcs.fenestrationCooling(window, coolingDT, userenvelope, windowED, windowEB, userweatherbin);

                for (int m = 0; m < 12; m++)
                {
                    for (int h = 0; h < 24; h++)
                    {
                        windowCoolingLoad[m, h] = windowCoolingLoad[m, h] + WCL[m, h];
                    }
                }
            }

            // latent is ok, ceiling is maybe?, infvent is ok, wall is ok
            // left off at floor

            var coolloadinfvent = UpdatedHeatCoolCalcs.CoolingLoadInfVent(coolingDT, Cs, userfloorsqft, userhomeprofile.Bedrooms, exposedsqft, userdraft, userhomeprofile.Floors);
            var coolloadwall = UpdatedHeatCoolCalcs.CoolingWallLoad(userweatherbin, userenvelope, uvalues.FrameWallU, coolingDT, userwallsqft-userwindowsqft);
            var coolloadceiling = UpdatedHeatCoolCalcs.CoolingCeilingLoad(userenvelope, uvalues.CeilingU, coolingDT, userceilingsqft, userweatherbin);
            var coolloadfloor = UpdatedHeatCoolCalcs.CoolingFloorLoad(userweatherbin, userenvelope, uvalues.FloorU, coolingDT, userfloorsqft);
            var coolloadlatent = UpdatedHeatCoolCalcs.coolingLatentLoad(coolingDT, userfloorsqft, userhomeprofile.Bedrooms, exposedsqft, userdraft, userhomeprofile.Floors);
            var occbtu = userhomeprofile.Occupancy * 350m;

            var currentCoolingLoadTot = UpdatedHeatCoolCalcs.coolingLoadTotal(windowCoolingLoad, coolloadinfvent, coolloadwall, coolloadceiling, coolloadfloor, coolloadlatent, ductlossvalues, occbtu, currentsched, userweatherbin, coolingbalance);
            var proposedCoolingLoadTot = UpdatedHeatCoolCalcs.coolingLoadTotal(windowCoolingLoad, coolloadinfvent, coolloadwall, coolloadceiling, coolloadfloor, coolloadlatent, ductlossvalues, occbtu, proposedsched, userweatherbin, coolingbalance);

            heatcoolsavings = UpdatedHeatCoolCalcs.HeatCoolSavingsDBDump(currentCoolingLoadTot, proposedCoolingLoadTot, currentHeatLoadTot, proposedHeatLoadTot, heatcoolsavings, userheatcool.HeatingFuel, userheatcool.CoolingSEER);
            fenestration.OwnerID = _userManager.GetUserId(User);

            var isAuthorized = await _authorizationService.AuthorizeAsync(User, fenestration, GreenrUserOperations.Update);

            if (!isAuthorized.Succeeded)
            {
                return new ChallengeResult();
            }

            fenestration = ViewModel_to_model(userFenestrationItem, fenestration);

            if (ModelState.IsValid)
            {
                try
                {
                    _context.HeatCoolSavings.Update(heatcoolsavings);
                    _context.Fenestration.Update(fenestration);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FenestrationExists(fenestration.ID))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction("Index");
            }
            return View(fenestration);
        }

                                                


这篇关于内存问题代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆