packages = ["numpy", "matplotlib", "pysd",]
Teacup Heat Transfer
Room Temperature:
source = "# netCDF4"
with open('netCDF4.py', 'w') as f:
f.write(source)
#import netCDF4
import pysd
mdl = """
James Houghton
Teacup
Hand Coded XMILE
30.0
0.0
0.125
Heat Loss to Room
("Teacup Temperature"-"Room Temperature")/"Characteristic Time"
Ambient Room Temperature
70
The average temperature of the tea and the cup
"Heat Loss to Room"
180
10
"""
with open('teacup.xmile', 'w') as f:
f.write(mdl)
model = pysd.read_xmile('teacup.xmile')
target = "sim_output"
# https://pysd-cookbook.readthedocs.io/en/latest/analyses/getting_started/Hello_World_Teacup.html#modify-parameter-values
def sim():
global outputs
PyScript.write(target, '', append=False)
outputs = model.run(params={'Room Temperature': float(Element('Room_Temperature').element.value)})
pyscript.write(target, outputs)
#level_plot
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from cycler import cycler
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.prop_cycle'] = cycler(color=['r', 'g', 'b', 'y'])
mpl.rcParams['lines.linewidth'] = 1
fig, axis = plt.subplots()
axis.set(xlabel = 'Time', ylabel = 'y')
axis.plot(outputs.index, outputs['Teacup Temperature'], label='Teacup Temperature')
axis.legend(loc="center right", )
pyscript.write(target, fig, append=True)
# outputs[['Teacup Temperature', 'Heat Loss to Room']]
"""
for column in outputs:
fig, axis = plt.subplots()
axis.set(xlabel = 'Time', ylabel = column)
axis.plot(outputs.index, outputs[column].values, label=column)
axis.legend(loc="best", )
pyscript.write(target, fig, append=True)
"""
sim()
def on_click(event): sim()
import random
def plotit(*args, **kwargs):
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([2, 3, 5, random.random()*10])
#print('plotting')
pyscript.write('sim_output', fig)