Use of scipy functions in pyMC3

The input to the function need to have the same type as you specified in the decorator, something like this should work:

# Make sure the input being shared are float
q = 50.
t = np.array([i*3600 for i in range(51)], dtype=np.float64)
...
q_shared, t_shared, Cs_shared, rb_shared = theano.shared(q), theano.shared(t), theano.shared(Cs), theano.shared(rb)
with basic_model:
    ...
    temp_cal = ils(q_shared, t_shared, Cs_shared, rb_shared, Leff) + Rb*q
    ...