! -*- f95 -*-
! (c) 2016 - Ilya Prokin - isprokin@gmail.com - https://sites.google.com/site/ilyaprokin
! INRIA Rhone-Alpes
! STDP model : TRPV1 channel
! An implementation of the allosteric TRPV1 model by Matta & Ahern, 2007; Calcium flux modeled by GHK.
module TRPV1
use pars_mod
use ghk_flux
implicit none
contains
! Matta & Ahern, 2007 (their eq 3)
real*8 function g_TRPV1_func(AEA,V,pars)
implicit none
real*8 :: AEA,V
type(pars_type) :: pars
real*8 :: L,D,C,P,K,Q,x,J
!con0stants
L=pars%TRPV1%L
D=pars%TRPV1%D
C=pars%TRPV1%C
P=pars%TRPV1%P
K=pars%TRPV1%K
Q=AEA/pars%TRPV1%KD
x=pars%TRPV1%z*pars%common%F*V/pars%common%RT
if (x <= 85.0) then
J=pars%TRPV1%J0*exp(x)
g_TRPV1_func = 1/(1+(1+J+K+Q+J*K+J*Q+K*Q+J*K*Q)/(L*(1+J*D+K*C+Q*P+J*K*C*D+J*Q*D*P+K*Q*C*P+J*K*Q*D*C*P)))
else
g_TRPV1_func = 1/(1+(1+K+Q+K*Q)/(L*(D+K*C*D+Q*D*P+K*Q*D*C*P)))
endif
end function g_TRPV1_func
real*8 function j_ca_TRPV1_func(g, V, calo, cali, pars)
implicit none
! g = i/V
real*8, intent(in) :: g, V, calo, cali
type(pars_type), intent(in) :: pars
j_ca_TRPV1_func = -pars%TRPV1%p_ca * g * ghk(V,cali,calo, pars)
end function j_ca_TRPV1_func
end module TRPV1