mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-20 03:18:07 -05:00
43 lines
1.2 KiB
Cython
43 lines
1.2 KiB
Cython
|
|
cimport cython
|
|
|
|
import numpy as np
|
|
from libc.math cimport exp, log
|
|
|
|
@cython.boundscheck(False)
|
|
cdef class PPF_summer:
|
|
|
|
def __init__(self, tau, delta):
|
|
self.tau = tau
|
|
self.delta = delta
|
|
|
|
cpdef set_constants(self, np.ndarray t, np.ndarray d, np.ndarray l, int IL0):
|
|
self.t = t
|
|
self.d = d
|
|
self.L = l
|
|
self.IL0 = IL0
|
|
|
|
cpdef dphir_dDelta(self):
|
|
cdef int i, j
|
|
|
|
dphir_dDelta = np.zeros_like(self.tau)
|
|
cdef double [:] dphir_dDelta_view = dphir_dDelta
|
|
cdef long [:] d = self.d
|
|
cdef double [:] t = self.t
|
|
cdef long [:] L = self.L
|
|
cdef double [:] n = self.n
|
|
|
|
cdef double [:] tau = self.tau
|
|
cdef double [:] delta = self.delta
|
|
|
|
for j in xrange(len(self.tau)):
|
|
log_tau = log(tau[j])
|
|
log_delta = log(delta[j])
|
|
for i in xrange(len(self.t)):
|
|
if i < self.IL0:
|
|
dphir_dDelta_view[j] += d[i]*n[i]*exp((d[i]-1)*log_delta+t[i]*log_tau)
|
|
else:
|
|
dphir_dDelta_view[j] += n[i]*exp((d[i]-1)*log_delta+t[i]*log_tau-delta[j]**L[i])*(d[i]-L[i]*delta[j]**L[i])
|
|
|
|
return dphir_dDelta
|
|
|