-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerator.py
32 lines (22 loc) · 1.08 KB
/
generator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Generator:
def __init__(self, weight, max_power, fuel_consumption, tank_capacity, fuel_density):
self.weight = weight
# g / Kw * h
self.fuel_consumption = fuel_consumption
# L
self.tank_capacity = tank_capacity
self.max_power = max_power
# g/L
self.fuel_density = fuel_density
self.remaining_tank = self.tank_capacity
def get_weight(self):
return self.weight + self.remaining_tank * self.fuel_density
def generate(self, power_required, dt):
# Don't allow power to exceed max power that the generator can put out.
actual_power = min(power_required, self.max_power)
fuel_required_grams = self.fuel_consumption * (actual_power / 1000) * (dt / 3600)
original_tank = self.remaining_tank
self.remaining_tank -= fuel_required_grams / self.fuel_density
self.remaining_tank = max(0, self.remaining_tank)
actual_power = (original_tank - self.remaining_tank) * self.fuel_density / (self.fuel_consumption / 1000 * dt / 3600)
return actual_power