| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(c_ptr), | value | :: | c_pt | |||
| real(kind=dp), | value | :: | T | |||
| real(kind=dp), | value | :: | B | |||
| real(kind=dp), | value | :: | TC | |||
| real(kind=dp), | value | :: | TCS | |||
| real(kind=dp), | value | :: | TC0 |
function heat_capacity_nbti(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) :: cpHigh, Bc20_loc, gama, Beta, CpLow type(nbti_cfg_t), pointer :: nbti_ptr call c_f_pointer(c_pt,nbti_ptr) cpHigh=400.0_dp Bc20_loc=14.0_dp gama=0.145_dp Beta=0.0023_dp if(T<Tc) then CpLow=(Beta+3.0_dp*gama/Tc**2)*T**3+gama*B*T/Bc20_loc else CpLow=Beta*T**3+gama*T endif heat_capacity=1.0_dp/(1.0_dp/cpHigh+1.0_dp/CpLow) end function heat_capacity_nbti