# energie.py - de batterijkar rolt van de oprit: een energieboekhouding, stap voor stap
import math

G = 9.81
M = 80.0                               # kar met batterijen (kg)
ALFA = math.atan(0.0625)               # hellingshoek van een oprit van 6,25 % (radialen)
L = 6.41                               # lengte van de oprit (m)
H0 = 0.40                              # hoogte van de bovenkant (m)
MU_R = 0.025                           # rolweerstandscoefficient
DT = 0.001                             # tijdstap (s)

F_par = M * G * math.sin(ALFA)         # zwaartekracht langs de helling (N)
F_r = MU_R * M * G * math.cos(ALFA)    # rolweerstand (N)

s, v, warmte = 0.0, 0.0, 0.0           # weg langs de oprit (m), snelheid (m/s), wrijvingswarmte (J)
print(" t (s)   s (m)   Ek (J)   Ep (J)   warmte (J)   som (J)")
stap = 0
while s < L:
    if stap % 1000 == 0:                # elke seconde een regel
        Ek = 0.5 * M * v ** 2
        Ep = M * G * (H0 - s * math.sin(ALFA))
        print(f"{stap * DT:5.1f}   {s:5.2f}   {Ek:6.1f}   {Ep:6.1f}   {warmte:10.1f}   {Ek + Ep + warmte:6.1f}")
    a = (F_par - F_r) / M              # tweede wet langs de helling
    ds = v * DT + 0.5 * a * DT ** 2
    warmte = warmte + F_r * ds         # arbeid van de rolweerstand wordt warmte
    s = s + ds
    v = v + a * DT
    stap = stap + 1
Ek = 0.5 * M * v ** 2
print(f"beneden na {stap * DT:.2f} s: v = {v:.2f} m/s, Ek = {Ek:.1f} J, warmte = {warmte:.1f} J")
