/*************************************************************************
* �ļ�: therm.h
* ����: Therm���ͷ�ļ�
**************************************************************************/

#ifndef _THERM_H
#define _THERM_H

#include "NGCal.h"
#include "Detail.h"

typedef struct Therm {
    double CAL_TH;
    int coefA;
    int coefB;
    int coefC;
    int coefD;
    int coefE;
    int coefF;
    int coefG;
    int coefH;
    int coefI;
    int coefJ;
    int coefK;

    double dPdD;
    double dPdT;
    double dSi;
    double dTold;
    double dMrxold;

    int GK_points;
    double GK_root[5];
    double GK_weight[5];

    double ThermConstants[21][11];
} Therm;


void Therm_Init(Therm *therm);

void Therm_Run(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail);

double Therm_CpiMolar(Therm *therm, NGParSTRUCT *ptNGPar);

double Therm_coth(double x);

double Therm_Ho(Therm *therm, NGParSTRUCT *ptNGPar);

double Therm_So(Therm *therm, NGParSTRUCT *ptNGPar);

void Therm_CprCvrHS(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail);

void Therm_HS_Mode(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail, double H, double S, int bGuess);

double Therm_H(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail);

double Therm_S(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail);

#endif
