def test_estimated_degree(): cell = ufl.tetrahedron mesh = ufl.Mesh(ufl.VectorElement('P', cell, 1)) V = ufl.FunctionSpace(mesh, ufl.FiniteElement('P', cell, 1)) f = ufl.Coefficient(V) u = ufl.TrialFunction(V) v = ufl.TestFunction(V) a = u * v * ufl.tanh(ufl.sqrt(ufl.sinh(f) / ufl.sin(f**f))) * ufl.dx handler = MockHandler() logger.addHandler(handler) with pytest.raises(RuntimeError): compile_form(a) logger.removeHandler(handler)
def _I(self, v, s, time): """ Original gotran transmembrane current dV/dt """ time = time if time else Constant(0.0) # Assign states V = v assert (len(s) == 2) v, w = s # Assign parameters u_c = self._parameters["u_c"] g_fi_max = self._parameters["g_fi_max"] tau_0 = self._parameters["tau_0"] tau_r = self._parameters["tau_r"] k = self._parameters["k"] tau_si = self._parameters["tau_si"] u_csi = self._parameters["u_csi"] Cm = self._parameters["Cm"] V_0 = self._parameters["V_0"] V_fi = self._parameters["V_fi"] # Init return args current = [ufl.zero()] * 1 # Expressions for the p component p = ufl.conditional(ufl.lt((-V_0 + V) / (V_fi - V_0), u_c), 0, 1) # Expressions for the Fast inward current component tau_d = Cm / g_fi_max J_fi = -(1 - (-V_0 + V)/(V_fi - V_0))*(-u_c + (-V_0 + V)/(V_fi -\ V_0))*p*v/tau_d # Expressions for the Slow outward current component J_so = p / tau_r + (1 - p) * (-V_0 + V) / (tau_0 * (V_fi - V_0)) # Expressions for the Slow inward current component J_si = -(1 + ufl.tanh(k*(-u_csi + (-V_0 + V)/(V_fi -\ V_0))))*w/(2*tau_si) # Expressions for the Stimulus protocol component J_stim = 0 # Expressions for the Membrane component current[0] = (V_0 - V_fi) * (J_stim + J_fi + J_si + J_so) # Return results return current[0]
def Vwitch(rho, params={}): tanh = ufl.tanh((rho - params['rhomax']) / params['cushion']) return (params['maxscale'] * params['sigma']**2 / 2 * (tanh + 1) * (rho / params['rhomax']))
def Vtophat(rho, params={}): tanh = ufl.tanh((rho - params['rhomax']) / params['cushion']) return params['maxscale'] * params['sigma']**2 / 2 * (tanh + 1)
def hs_Cinf(): if type(x) == np.ndarray: return 0.5*np.tanh(2.5*(x-float(x0))/eps) + 0.5 return 0.5*tanh(2.5*(x-x0)/eps) + 0.5