function derivative_function_of_pstar_PT(sgnBC,Pstar,Rotank,Ctank,Ptank,p_LR,u_LR,z_LR)
real(dp), intent(in) :: sgnBC,Pstar,Rotank,Ctank,Ptank,p_LR,u_LR,z_LR
real(dp) :: derivative_function_of_pstar_PT
real(dp) :: Tstar_LR,rostar_LR,dTdp_Ro,dTdRo_p,dRodP,dUdP,Ustar,dRstardRo,dRstardT,dRdP,Rstar
real(dp) :: dPdT_local, cv_local
rostar_LR=Rotank+(Pstar-Ptank)/(Ctank**2)
Tstar_LR=T_roP(rostar_LR,Pstar)
call jacobian_roT(rostar_LR, Tstar_LR, cv_local, dPdT_local, dTdp_Ro, dTdRo_p, dRstardRo, dRstardT, Rstar)
Ustar=u_LR+sgnBC*(Pstar-p_LR)/z_LR
dRodP=1.0_dp/(Ctank**2)
dUdP=sgnBC/z_LR
dRdP=(dRstardRo+dRstardT*dTdRo_p)/(Ctank**2)+dRstardT*dTdp_Ro
derivative_function_of_pstar_PT=(dRdP*rostar_LR-Rstar*dRodP)/(rostar_LR**2)+Ustar*dUdP
end function derivative_function_of_pstar_PT