Esempio n. 1
0
	def make(self, row):
		building = row.group.building
		spv = row.group.database.spv
		cost = lambda year: building.costs.get(year=year).cost
		base = building.square_feet * sum(cost(year) * spv(year) for year in row.years)
		self.base = row.group.index(base, 'whitestone')
		self.save()
		parts = row.assemblies, row.components
		for attr in 'maintenance', 'repair', 'replacement', 'credit':
			setattr(self, attr, sum(getattr(part, attr) for part in parts))

		residual = min(r.residual.cost for r in row.options)
		self.future = row.pv(
				row.energy.cost
				+ self.base
				+ self.maintenance
				+ self.repair
				+ self.replacement
				- self.credit
				- residual)

		self.investment = (
				row.group.data.first
				- residual
				+ self.replacement)

		self.lifecycle = (row.group.data.first + self.future)
		self.save()
Esempio n. 2
0
	def create(cls, component, parent):
		self = cls(parent=parent)
		period = parent.row.period
		group = parent.row.group
		mcost = component.maintenance_cost
		rcost = component.repair_cost
		rrate = component.repair_rate
		pcost = component.replacement_cost
		prate = component.replacement_rate
		year = parent.row.year
		pv = parent.row.pv

		self.maintenance = sum(pv(mcost, year) for year in parent.row.years)

		total = 0 * dollar
		replaced = 1
		for year in parent.row.years:
			if (year - replaced) >= prate:
				replaced = year
			if (year - replaced) >= rrate:
				total += pv(rcost, year)
		self.repair = total

		times = int((period // prate).item())
		self.replacement = sum(pv(pcost, prate * i) for i in range(1, times + 1))

		if period < prate:
			self.credit = 0 * dollar
		else:
			leftover = period % prate
			total = (leftover / prate) * pcost
			self.credit = pv(total, year)

		self.save()
		return self
Esempio n. 3
0
 def make(self, group):
     self.save()
     for d in Direction.objects.all():
         Window.create(data=self, direction=d)
     parts = list(self.parts())
     self.cost = sum(p.cost for p in parts)
     self.delta = sum(p.delta for p in parts)
     self.save()
Esempio n. 4
0
	def make(self, group):
		self.save()
		for d in Direction.objects.all():
			Window.create(data=self, direction=d)
		parts = list(self.parts())
		self.cost = sum(p.cost for p in parts)
		self.delta = sum(p.delta for p in parts)
		self.save()
Esempio n. 5
0
	def make(self, row):
		self.save()
		parts = row.group.components.parts()
		totals = [ComponentTotals.create(p, parent=self) for p in parts]
		self.maintenance = sum(t.maintenance for t in totals)
		self.repair = sum(t.repair for t in totals)
		self.replacement = sum(t.replacement for t in totals)
		self.credit = sum(t.credit for t in totals)
		self.save()
Esempio n. 6
0
 def make(self, row):
     self.save()
     components = row.group.assemblies.components.all()
     parts = chain(*(c.parts.all() for c in components))
     totals = [AssemblyPartTotals.create(p, parent=self) for p in parts]
     self.maintenance = sum(t.maintenance for t in totals)
     self.repair = sum(t.repair for t in totals)
     self.replacement = sum(t.replacement for t in totals)
     self.credit = sum(t.credit for t in totals)
     self.save()
Esempio n. 7
0
	def make(self, row):
		self.save()
		components = row.group.assemblies.components.all()
		parts = chain(*(c.parts.all() for c in components))
		totals = [AssemblyPartTotals.create(p, parent=self) for p in parts]
		self.maintenance = sum(t.maintenance for t in totals)
		self.repair = sum(t.repair for t in totals)
		self.replacement = sum(t.replacement for t in totals)
		self.credit = sum(t.credit for t in totals)
		self.save()
Esempio n. 8
0
	def make(self, group):
		self.save()
		components = [AssemblyComponent.create(self, system) for system in filter(bool, (
			group.building.heating_system,
			group.building.cooling_system,
			group.building.packaged_unit,
			group.building.energy_supply))]
		self.cost = sum(c.cost for c in components)
		self.delta = sum(c.delta for c in components)
		self.save()
Esempio n. 9
0
 def make(self, group):
     self.save()
     components = [
         AssemblyComponent.create(self, system)
         for system in filter(bool, (group.building.heating_system,
                                     group.building.cooling_system,
                                     group.building.packaged_unit,
                                     group.building.energy_supply))
     ]
     self.cost = sum(c.cost for c in components)
     self.delta = sum(c.delta for c in components)
     self.save()
Esempio n. 10
0
	def takefrom(self, group, sheets, size, *initial):
		sheets = list(sheets)
		index = lambda cost: group.index(cost, 'insulation')
		total = lambda attr: index(sum(getattr(sheet, attr) for sheet in sheets))
		self.maintenance_cost = total('maintenance_cost')
		self.repair_cost = total('repair_cost') * size
		self.replacement_cost = total('replacement_cost') * size
		self.new = total('cost') * size
		self.old = index(sum(map(cost, initial))) * size
		rates = self.RateModel.rates(group.location.state.census_region)
		self.repair_rate = rates.repair
		self.replacement_rate = rates.replace
Esempio n. 11
0
 def takefrom(self, group, sheets, size, *initial):
     sheets = list(sheets)
     index = lambda cost: group.index(cost, 'insulation')
     total = lambda attr: index(
         sum(getattr(sheet, attr) for sheet in sheets))
     self.maintenance_cost = total('maintenance_cost')
     self.repair_cost = total('repair_cost') * size
     self.replacement_cost = total('replacement_cost') * size
     self.new = total('cost') * size
     self.old = index(sum(map(cost, initial))) * size
     rates = self.RateModel.rates(group.location.state.census_region)
     self.repair_rate = rates.repair
     self.replacement_rate = rates.replace
Esempio n. 12
0
 def replacement(self, index=True):
     if not self.component: return 0 * dollar
     rate = self.rates(self.master.census_region).replace
     cost = self.replacement_cost
     times = int((self.year // rate).item())
     return sum(
         self.adjust(cost, index, True, rate * i) for i in irange(1, times))
Esempio n. 13
0
	def cost(self, index=True):
		self.year.units = 'year'
		years = irange(1, int(self.year.item()))
		area = self.building.square_feet
		cost = lambda year: self.building.costs.get(year=year).cost
		total = area * sum(cost(year) * self.spv(year) for year in years)
		return self.index(total) if index else total
Esempio n. 14
0
    def total(self, state, usage):
        def totals():
            for equivalence in self.equivalences.select_related('type'):
                type, eq = equivalence.emission, equivalence.equivalence
                yield type.total(state, usage) * eq

        return sum(totals(), Quantity(0, self.unit))
Esempio n. 15
0
    def total(self, state, usage):
        def totals():
            for equivalence in self.equivalences.select_related("type"):
                type, eq = equivalence.emission, equivalence.equivalence
                yield type.total(state, usage) * eq

        return sum(totals(), Quantity(0, self.unit))
Esempio n. 16
0
 def cost(self, index=True):
     self.year.units = 'year'
     years = irange(1, int(self.year.item()))
     area = self.building.square_feet
     cost = lambda year: self.building.costs.get(year=year).cost
     total = area * sum(cost(year) * self.spv(year) for year in years)
     return self.index(total) if index else total
Esempio n. 17
0
	def makewith(self, data, location, building, standard, simulation):
		r = BlanketWallInsulation.r(standard, building, location.climate_zone(standard))
		inner = tuple(BlanketWallInsulation.sheets(location, building, standard))
		r -= sum((i.r for i in inner if i.r), 0)
		outer = RigidWallInsulation.sheets(location, building, standard, r)

		size = simulation.wall_area.into('ft**2')
		self.takefrom(data.group, chain(inner, outer), size,
				building.blanket_wall_insulation,
				building.rigid_wall_insulation)
		self.save()
Esempio n. 18
0
    def make(self, row):
        building = row.group.building
        spv = row.group.database.spv
        cost = lambda year: building.costs.get(year=year).cost
        base = building.square_feet * sum(
            cost(year) * spv(year) for year in row.years)
        self.base = row.group.index(base, 'whitestone')
        self.save()
        parts = row.assemblies, row.components
        for attr in 'maintenance', 'repair', 'replacement', 'credit':
            setattr(self, attr, sum(getattr(part, attr) for part in parts))

        residual = min(r.residual.cost for r in row.options)
        self.future = row.pv(row.energy.cost + self.base + self.maintenance +
                             self.repair + self.replacement - self.credit -
                             residual)

        self.investment = (row.group.data.first - residual + self.replacement)

        self.lifecycle = (row.group.data.first + self.future)
        self.save()
Esempio n. 19
0
    def makewith(self, data, location, building, standard, simulation):
        r = BlanketWallInsulation.r(standard, building,
                                    location.climate_zone(standard))
        inner = tuple(
            BlanketWallInsulation.sheets(location, building, standard))
        r -= sum((i.r for i in inner if i.r), 0)
        outer = RigidWallInsulation.sheets(location, building, standard, r)

        size = simulation.wall_area.into('ft**2')
        self.takefrom(data.group, chain(inner, outer), size,
                      building.blanket_wall_insulation,
                      building.rigid_wall_insulation)
        self.save()
Esempio n. 20
0
 def replacement(self, index=True):
     return sum(item.replacement(index) for item in self)
Esempio n. 21
0
 def credit(self, index=True):
     return sum(item.credit(index) for item in self)
Esempio n. 22
0
	def credit(self, index=True):
		return sum(item.credit(index) for item in self)
Esempio n. 23
0
 def maintenance(self, index=True):
     return sum(item.maintenance(index) for item in self)
Esempio n. 24
0
	def cost_for(self, building, mbh, tons):
		mbh = mbh.into(MBH)
		cost_per_mbh = sum(boiler.cost_per_mbh for boiler in self.boilers.all())
		return (cost_per_mbh * mbh) + self.fixed_cost(building)
Esempio n. 25
0
	def make(self, row):
		self.save()
		fuels = [Fuel.create(data=self, fuel=fuel) for fuel in self.fuels]
		self.use = sum(f.use for f in fuels)
		self.cost = sum(f.cost for f in fuels)
		self.save()
Esempio n. 26
0
 def cost(self, index=True):
     return sum(getattr(item, self.field)(index) for item in self)
Esempio n. 27
0
	def replacement(self, index=True):
		if not self.component: return 0 * dollar
		rate = self.rates(self.master.census_region).replace
		cost = self.replacement_cost
		times = int((self.year // rate).item())
		return sum(self.adjust(cost, index, True, rate * i) for i in irange(1, times))
Esempio n. 28
0
	def maintenance(self, index=True):
		return sum(item.maintenance(index) for item in self)
Esempio n. 29
0
	def repair(self, index=True):
		return sum(item.repair(index) for item in self)
Esempio n. 30
0
 def cost(self, index=True):
     cost = sum(item.cost(index) for item in self)
     return self.adjust(cost, index)
Esempio n. 31
0
 def cost(self, index=True):
     return sum(getattr(item, self.field)(index) for item in self)
Esempio n. 32
0
	def total(self, state, usage):
		emissions = self.emissions.filter(Q(state=state) | Q(state=None))
		return sum(e.total(usage) for e in emissions)
Esempio n. 33
0
 def total(self, state, usage):
     emissions = self.emissions.filter(Q(state=state) | Q(state=None))
     return sum(e.total(usage) for e in emissions)
Esempio n. 34
0
 def repair(self, index=True):
     return sum(item.repair(index) for item in self)
Esempio n. 35
0
 def upv(self, t=None):
     t = t or self.year
     if isinstance(t, Quantity):
         t.units = "year"
         t = int(t.item())
     return sum(self.spv(y) for y in range(t))
Esempio n. 36
0
 def cost_for(self, building, mbh, tons):
     mbh = mbh.into(MBH)
     cost_per_mbh = sum(boiler.cost_per_mbh
                        for boiler in self.boilers.all())
     return (cost_per_mbh * mbh) + self.fixed_cost(building)
Esempio n. 37
0
 def cost(self, index=True):
     cost = sum(item.cost(index) for item in self)
     return self.adjust(cost, index)
Esempio n. 38
0
 def make(self, row):
     self.save()
     fuels = [Fuel.create(data=self, fuel=fuel) for fuel in self.fuels]
     self.use = sum(f.use for f in fuels)
     self.cost = sum(f.cost for f in fuels)
     self.save()
Esempio n. 39
0
 def delta(self, index=True):
     delta = sum(item.delta(index) for item in self)
     return self.adjust(delta, index)
Esempio n. 40
0
	def initial_fixed_cost(self):
		return self.cost - sum(c.average_cost(self.tons) for c in self.components)
Esempio n. 41
0
	def replacement(self, index=True):
		return sum(item.replacement(index) for item in self)
Esempio n. 42
0
 def upv(self, t=None):
     t = t or self.year
     if isinstance(t, Quantity):
         t.units = 'year'
         t = int(t.item())
     return sum(self.spv(y) for y in range(t))
Esempio n. 43
0
	def cost_for(self, building, mbh, tons):
		tons = tons.into(cooling)
		cost_per_ton = sum(c.marginal_cost(tons) for c in self.components)
		return (cost_per_ton * tons) + self.fixed_cost(building)
Esempio n. 44
0
 def delta(self, index=True):
     delta = sum(item.delta(index) for item in self)
     return self.adjust(delta, index)
Esempio n. 45
0
	def use(self):
		return sum(i.use for i in self)