Skip to content

Commit

Permalink
Added more derivatives for the departure functions
Browse files Browse the repository at this point in the history
  • Loading branch information
ibell committed May 21, 2015
1 parent d0d41aa commit 99af9d6
Showing 1 changed file with 99 additions and 0 deletions.
99 changes: 99 additions & 0 deletions src/Backends/Helmholtz/ExcessHEFunction.h
Expand Up @@ -29,6 +29,10 @@ class DepartureFunction
virtual double d2alphar_dDelta_dTau(double tau, double delta) = 0;
virtual double dalphar_dTau(double tau, double delta) = 0;
virtual double d2alphar_dTau2(double tau, double delta) = 0;
virtual double d3alphar_dTau3(double tau, double delta) = 0;
virtual double d3alphar_dDelta_dTau2(double tau, double delta) = 0;
virtual double d3alphar_dDelta2_dTau(double tau, double delta) = 0;
virtual double d3alphar_dDelta3(double tau, double delta) = 0;
};

/** \brief The departure function used by the GERG-2008 formulation
Expand Down Expand Up @@ -83,6 +87,10 @@ class GERG2008DepartureFunction : public DepartureFunction
double dalphar_dTau(double tau, double delta){return phi.dTau(tau, delta);};
double d2alphar_dDelta2(double tau, double delta){return phi.dDelta2(tau, delta);};
double d2alphar_dTau2(double tau, double delta){return phi.dTau2(tau, delta);};
double d3alphar_dTau3(double tau, double delta){ return phi.dTau3(tau, delta); };
double d3alphar_dDelta_dTau2(double tau, double delta){ return phi.dDelta_dTau2(tau, delta); };
double d3alphar_dDelta2_dTau(double tau, double delta){ return phi.dDelta2_dTau(tau, delta); };
double d3alphar_dDelta3(double tau, double delta){ return phi.dDelta3(tau, delta); };
};

/** \brief A polynomial/exponential departure function
Expand Down Expand Up @@ -116,6 +124,12 @@ class ExponentialDepartureFunction : public DepartureFunction
double dalphar_dTau(double tau, double delta){return phi.dTau(tau, delta);};
double d2alphar_dDelta2(double tau, double delta){return phi.dDelta2(tau, delta);};
double d2alphar_dTau2(double tau, double delta){return phi.dTau2(tau, delta);};

double d3alphar_dTau3(double tau, double delta){ return phi.dTau3(tau, delta); };
double d3alphar_dDelta_dTau2(double tau, double delta){ return phi.dDelta_dTau2(tau, delta); };
double d3alphar_dDelta2_dTau(double tau, double delta){ return phi.dDelta2_dTau(tau, delta); };
double d3alphar_dDelta3(double tau, double delta){ return phi.dDelta3(tau, delta); };

};

typedef shared_ptr<DepartureFunction> DepartureFunctionPointer;
Expand Down Expand Up @@ -211,6 +225,55 @@ class ExcessTerm
}
return summer;
};
double d3alphar_dTau3(double tau, double delta, const std::vector<CoolPropDbl> &x)
{
double summer = 0;
for (std::size_t i = 0; i < N - 1; i++)
{
for (std::size_t j = i + 1; j < N; j++)
{
summer += x[i] * x[j] * F[i][j] * DepartureFunctionMatrix[i][j]->d3alphar_dTau3(tau, delta);
}
}
return summer;
};
double d3alphar_dDelta_dTau2(double tau, double delta, const std::vector<CoolPropDbl> &x)
{
double summer = 0;
for (std::size_t i = 0; i < N - 1; i++)
{
for (std::size_t j = i + 1; j < N; j++)
{
summer += x[i] * x[j] * F[i][j] * DepartureFunctionMatrix[i][j]->d3alphar_dDelta_dTau2(tau, delta);
}
}
return summer;
};
double d3alphar_dDelta2_dTau(double tau, double delta, const std::vector<CoolPropDbl> &x)
{
double summer = 0;
for (std::size_t i = 0; i < N - 1; i++)
{
for (std::size_t j = i + 1; j < N; j++)
{
summer += x[i] * x[j] * F[i][j] * DepartureFunctionMatrix[i][j]->d3alphar_dDelta2_dTau(tau, delta);
}
}
return summer;
};
double d3alphar_dDelta3(double tau, double delta, const std::vector<CoolPropDbl> &x)
{
double summer = 0;
for (std::size_t i = 0; i < N - 1; i++)
{
for (std::size_t j = i + 1; j < N; j++)
{
summer += x[i] * x[j] * F[i][j] * DepartureFunctionMatrix[i][j]->d3alphar_dDelta3(tau, delta);
}
}
return summer;
};

double dalphar_dxi(double tau, double delta, const std::vector<CoolPropDbl> &x, std::size_t i)
{
double summer = 0;
Expand Down Expand Up @@ -258,6 +321,42 @@ class ExcessTerm
}
return summer;
};
double d3alphar_dxi_dDelta2(double tau, double delta, const std::vector<CoolPropDbl> &x, std::size_t i)
{
double summer = 0;
for (std::size_t k = 0; k < N; k++)
{
if (i != k)
{
summer += x[k] * F[i][k] * DepartureFunctionMatrix[i][k]->d2alphar_dDelta2(tau, delta);
}
}
return summer;
};
double d3alphar_dxi_dTau2(double tau, double delta, const std::vector<CoolPropDbl> &x, std::size_t i)
{
double summer = 0;
for (std::size_t k = 0; k < N; k++)
{
if (i != k)
{
summer += x[k] * F[i][k] * DepartureFunctionMatrix[i][k]->d2alphar_dTau2(tau, delta);
}
}
return summer;
};
double d3alphar_dxi_dDelta_dTau(double tau, double delta, const std::vector<CoolPropDbl> &x, std::size_t i)
{
double summer = 0;
for (std::size_t k = 0; k < N; k++)
{
if (i != k)
{
summer += x[k] * F[i][k] * DepartureFunctionMatrix[i][k]->d2alphar_dDelta_dTau(tau, delta);
}
}
return summer;
};
};

} /* namespace CoolProp */
Expand Down

0 comments on commit 99af9d6

Please sign in to comment.