function heat_capacity_glass_kapton_glass(c_pt,T,B,TC,TCS,TC0) result(heat_capacity) bind(C)
type(c_ptr), value :: c_pt
real(dp), value :: T,B,TC,TCS,TC0
real(dp) :: heat_capacity
real(dp) :: Tmin,Tmax,TT,u,w,Rb,Rh
real(dp), parameter :: T1 = 20.0_dp, T2 = 30.0_dp
type(glass_kapton_glass_cfg_t), pointer :: glass_kapton_glass_ptr
call c_f_pointer(c_pt,glass_kapton_glass_ptr)
Tmin = 1.0_dp
Tmax = 300.0_dp
TT=min(T,Tmax)
TT=max(TT,Tmin)
u = (TT - T1) / (T2 - T1)
u = max(0.0_dp, min(1.0_dp, u))
w = u**3 * (6.0_dp*u**2 - 15.0_dp*u + 10.0_dp)
Rb = -0.00630328_dp*TT**3 + 0.440052_dp*TT**2 - 1.719_dp*TT + 1.92937_dp
Rh = 5.58686404_dp * TT**0.98980198_dp
heat_capacity = (1.0_dp - w)*Rb + w*Rh
end function heat_capacity_glass_kapton_glass