Files
SystemSimulationApp/tests/data/AmesimModels/help/source/pn_public.h
T

1440 lines
22 KiB
C

/******************************************************************************
* This material contains trade secrets or otherwise confidential
* information owned by Siemens Industry Software Inc. or its
* affiliates (collectively, "Siemens"), or its licensors. Access to
* and use of this information is strictly limited as set forth in the
* Customer's applicable agreements with Siemens.
*
* Unpublished work. Copyright 2023 Siemens
******************************************************************************/
#ifndef PN_PUBLIC_H
#define PN_PUBLIC_H
/**************************************************************************/
/* */
/* Generic Macros for the PNEUMATIC LIBRARY */
/* */
/**************************************************************************/
#define PN_SUBMODEL_WARNING(submodelInstance) \
amefprintf(stderr, "\nWarning in %s instance %d.\n", _SUBMODELNAME_, *submodelInstance);
#define PN_SUBMODEL_ERROR(submodelInstance) \
amefprintf(stderr, "\nFatal error in %s instance %d.\n", _SUBMODELNAME_, *submodelInstance); \
amefprintf(stderr, "Terminating the program.\n"); \
AmeExit(1);
/* Stores structures name */
#define PN_STORESDEF2(x, y) x ## y
#define PN_STORESDEF(x, y) PN_STORESDEF2(x, y)
#define PN_SUBMODEL_IC_DEF PN_STORESDEF(PNSUBMODEL, _IC_DEF_)
#define PN_SUBMODEL_C_DEF PN_STORESDEF(PNSUBMODEL, _C_DEF_ )
#define PN_SUBMODEL_PS_DEF PN_STORESDEF(PNSUBMODEL, _PS_DEF_)
#define PN_NAMECHECK2(submodel, submodelname) \
if (strcmp(submodelname, #submodel) != 0)\
{\
amefprintf(stderr, "\nPlease update \"PNSUBMODEL\" variable in %s code.\n", __FILE__);\
PN_SUBMODEL_WARNING(n);\
}
#define PN_NAMECHECK(submodel, submodelname) PN_NAMECHECK2(submodel, submodelname)
/**************************************************************************/
/* */
/* Prototypes for the PNEUMATIC LIBRARY */
/* */
/**************************************************************************/
extern void pn2vol2_
(
double *dtemp,
double *dpress,
double *temp,
double *press,
double *sdm,
double *mgas,
double *sdh,
double *vvolt,
double *volt,
double *kth,
double *sth,
double *extemp,
int *gi
);
/**************************************************************************/
/* */
/* Prototypes for the NEW PNEUMATIC LIBRARY */
/* */
/**************************************************************************/
/**************************** pn2atmos.c ******************************/
extern void pn2setatp_
(
double *patmos
);
extern double pn2getatp_();
/**************************** pn2lambda.c ******************************/
extern int pn2setlambda_
(
double *lbda
);
/**************************** pn2gasprops.c **************************/
extern void pn2CreateMixtureProp3_
(
double *YiSpecies,
int *giSpecies,
int *nspec,
int *gi,
char *submodelName,
int *submodelInstance
);
extern int pn2_valid_gas_(int *index, int *error);
extern void pn2checkpt_
(
double *p,
double *temp,
int *index
);
extern double pn2cmpti_
(
double *pr,
double *p,
double *temp,
int *index
);
extern double pn2cppti_
(
double *p,
double *temp,
int *index
);
extern double pn2cvpti_
(
double *p,
double *temp,
int *index
);
extern double pn2gpti_
(
double *p,
double *temp,
int *index
);
extern double pn2gspti_
(
double *p,
double *temp,
int *index
);
extern double pn2hpti_
(
double *p,
double *temp,
int *index
);
extern double pn2spti_
(
double *p,
double *temp,
int *index
);
extern double pn2lampti_
(
double *p,
double *temp,
int *index
);
extern double pn2mupti_
(
double *p,
double *temp,
int *index
);
extern double pn2nupti_
(
double *p,
double *temp,
int *index
);
extern double pn2pcpti_
(
double *p,
double *temp,
int *index
);
extern double pn2rhopti_
(
double *p,
double *temp,
int *index
);
extern double pn2cspti_
(
double *p,
double *temp,
int *index
);
extern double pn2zpti_
(
double *p,
double *temp,
int *index
);
extern double pn2ri_
(
int *index
);
/*! pn2IsEosPerfect_: returns 1 if gas EoS is perfect. 0 otherwise */
extern int pn2IsEosPerfect_
(
int *index
);
/**************************** pn2geta1b1.c **************************/
extern double pn2geta1b1_
(
double *delta,
double *rc,
double *hdia,
double *A1,
double *B1
);
/**************************** pn2orif_zeta.c **************************/
extern void pn2orif_zeta_
(
double *pa1,
double *t1,
double *pa2,
double *t2,
double *area,
double *diam,
int *n12,
int *n21,
double *dm1,
double *dmh1,
double *re,
double *v,
double *ff,
int *gi,
int *reg
);
extern void pn2handledisc_
(
double *p1,
double *p2,
int *handle_disc,
int *use_hyst,
double *hyst,
int *reg
);
/**************************** pn2pipes.c **************************/
extern void pn2pipefr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *v,
double *ff,
double *dh1,
double *dm1,
double *dh2,
double *dm2,
double *cm,
double *c,
int *gi,
int *reg1,
int *reg2
);
extern void pn2pipifr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *dm1,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *v,
double *ff,
double *dm1dot,
double *dh1,
double *c,
int *reg,
int *gi
);
extern void pn2pipefrber_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *diam,
double *rr,
double *l,
double *area,
double *v,
double *re,
double *ff,
double *dh1,
double *dm1,
double *dh2,
double *dm2,
double *c,
int *gi,
int *reg
);
/**************************** pn2rcqfix.c **************************/
extern void pn2rcqfix_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *area,
double *cq,
int *gi,
double *cm,
double *gasvel,
int *reg
);
/**************************** pn2rcqnor.c **************************/
extern void pn2rcqnor_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *b,
double *c,
int *gi,
double *cm,
double *gasvel,
int *reg
);
/**************************** pn2rcqper.c **************************/
extern void pn2rcqper_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *area,
double *cq,
int *gi,
double *cm,
double *gasvel,
int *reg
);
/**************************** pn2rtabprops.c **************************/
extern int pn2readeos_
(
char *fileName,
double **eosValues
);
extern int pn2readcphs_
(
char *fileName,
double **cphsValues
);
extern int pn2readmu_
(
char *fileName,
double **muValues
);
extern int pn2readlambda_
(
char *fileName,
double **lambdaValues
);
/**************************** pn2init.c **************************/
#define _PNGD00_RP_NUMBER_ 8
#define _PNGD00_IP_NUMBER_ 4
#define _PNGD00_TP_NUMBER_ 5
#define _PNGD00_C_NUMBER_ 0
#define _PNGD00_IC_NUMBER_ 1
int preinit_pngd00_
(
int *n,
double *rp,
int *ip,
char *tp[5],
double *c,
int *ic
);
/**************************** pnturb.c **************************/
extern double pnturbdmctable_
(
int *index, double *ratio, double *Nc, double *ratiolimit, int *disc
);
extern double pnturbpower_
(
double *pressup, double *tempup, double *dhturbin, double *dhturbout,
double *dmturb, double *ratio, double *eff, int *gi
);
extern double pnTurbineBackflowPower_(
double *pressDownBf,
double *tempDownBf,
double *pressUpBf,
double *tempUpBf,
double *BFarea,
double *cqbf,
int *gi,
double *dhTurbOut,
double *dhTurbIn,
double *dmc,
double *eff,
double *dmTurb,
int *reg1
);
extern double pnTurbineTorque_
(
double *w, double *Pmec
);
/**************************** pn2vol1.c **************************/
extern void pn2vol1_
(
double *dtemp,
double *dpress,
double *temp,
double *press,
double *sdm,
double *mgas,
double *vvolt,
double *volt,
double *k,
int *gi
);
/**************************** pn2vol2.c **************************/
extern void pn2vol2_
(
double *dtemp,
double *dpress,
double *temp,
double *press,
double *sdm,
double *mgas,
double *sdh,
double *vvolt,
double *volt,
double *kth,
double *sth,
double *extemp,
int *gi
);
/**************************** pn2vol.c **************************/
extern void pn2vol_
(
double *dtemp,
double *dpress,
double *mgas,
double *temp,
double *press,
double *sdm,
double *sdh,
double *volt,
double *dvol,
double *dq,
int *gi
);
/************************** pnvalvearea.c ****************************/
/*! pnbuttvalvearea_: computes the cross-sectional area of a butterfly valve */
extern void pnbuttvalvearea_
(
double *phi,
double *d,
double *D,
double *area
);
/*! pngatevalvearea_: computes the cross-sectional area of a gate valve */
extern void pngatevalvearea_
(
double *x,
double *d,
double *D,
double *area
);
/**************************************************************************/
/* */
/* Prototypes for the THERMAL-PNEUMATIC LIBRARY */
/* */
/**************************************************************************/
/**************************** tpzconv.c **************************/
extern double tpzconv_
(
double *le,
double *diam,
double *alpha
);
/**************************** tpzdiff.c **************************/
extern double tpzdiff_
(
double *area1,
double *area2,
double *alpha
);
/** Special heat exchanges **/
extern void pn_Nu_extconv_free_plate_
(
double *Pr,
double *Ra,
double *beta,
double *tFluid,
double *tPlate,
double *cdim_factor,
double *Nu
);
extern void pn_Nu_extconv_forced_plate_
(
double *Pr,
double *Re,
double *Nu
);
extern void pn_Nu_extconv_free_cyl_
(
double *Pr,
double *Ra,
double *Nu
);
extern void pn_Nu_extconv_forced_cyl_
(
double *Pr,
double *Re,
double *Nu
);
/* Obsolete utilities */
extern double pngeta1b1_
(
double *delta, double *rc, double *hdia,
double *A1, double *B1
);
extern double pngetcm_
(
double *pr
);
extern double pngetcp_();
extern double pngetcv_();
extern double pngetg_();
extern double pngetlcm_
(
double *lambda,
double *pr
);
extern double pngetmu_();
extern double pngetpc_();
extern double pngetr_();
extern double pngetrho_
(
double *p,
double *temp
);
extern double pnjetforc_
(
double *dm,
double *v,
double *teta
);
extern double pnsmooth_
(
double *f1,
double *f2,
double *x,
double *x1,
double *x2
);
extern void pnchkgas_();
extern void pnpipefr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *v,
double *ff,
double *dh1,
double *dm1,
double *dh2,
double *dm2,
double *c,
int *reg
);
extern void pnpipifr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *dm1,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *v,
double *ff,
double *dm1dot,
double *dh1,
double *dh2,
double *c,
int *reg
);
extern void pnrcqfix2_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *dh2,
double *dm2,
double *temp2,
double *press2,
double *area,
double *cq,
double *cm,
double *gasvel,
int *reg1,
int *reg2
);
extern void pnrcqfix_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *dh2,
double *dm2,
double *temp2,
double *press2,
double *area,
double *cq,
double *cm,
int *reg1,
int *reg2
);
extern void pnrcqnor2_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *dh2,
double *dm2,
double *temp2,
double *press2,
double *b,
double *c,
double *cm,
double *gasvel,
int *reg1,
int *reg2
);
extern void pnrcqnor_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *dh2,
double *dm2,
double *temp2,
double *press2,
double *b,
double *c,
double *cm,
int *reg1,
int *reg2
);
extern void pnrcqper2_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *dh2,
double *dm2,
double *temp2,
double *press2,
double *area,
double *cq,
double *cm,
double *gasvel,
int *reg1,
int *reg2
);
extern void pnrcqper_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *dh2,
double *dm2,
double *temp2,
double *press2,
double *area,
double *cq,
double *cm,
int *reg1,
int *reg2
);
extern void pnsetcpv2_
(
double *cp,
double *cv,
double *mu
);
extern void pnsetcpv_
(
double *cp,
double *cv
);
extern void pnsetgas2_
(
double *cp,
double *cv,
double *g,
double *r,
double *mu
);
extern void pnsetgas_
(
double *cp,
double *cv,
double *g,
double *r
);
extern void pnvol_
(
double *dtemp,
double *dpress,
double *temp,
double *press,
double *sdm,
double *mgas,
double *sdh,
double *vvolt,
double *volt,
double *k,
double *kth,
double *sth,
double *extemp,
int *mode
);
extern void pnvol1_
(
double *dtemp,
double *dpress,
double *temp,
double *press,
double *sdm,
double *mgas,
double *vvolt,
double *volt,
double *k
);
extern void pnvol2_
(
double *dtemp,
double *dpress,
double *temp,
double *press,
double *sdm,
double *mgas,
double *sdh,
double *vvolt,
double *volt,
double *kth,
double *sth,
double *extemp
);
extern void pn2CreateMixtureProp_
(
double *lrp,
int *lip
);
extern void pn2CreateMixtureProp2_
(
double *YiSpecies,
int *giSpecies,
double *pRefA,
int *nspec,
int *gi
);
extern void pn2CreateGasProp_
(
int index
);
extern void pn2RegisterPerfectGasProp_
(
double cp,
double cv,
double mu,
double lam,
int index
);
extern void pn2RegisterRealGasProp_
(
char *tp0, double *rp1, double *rp2,
double *rp3, int *eosind, int *index
);
extern void pn2RegisterGenericGasProp_
(
#ifndef _NO_PROTO
double *eosValues,
double *cphsValues,
double *muValues,
double *lambdaValues,
char *gasName,
int *index,
char *submodelName,
int *submodelInstance
#endif
);
extern void pn2RegisterGasProp_
(
double *rp,
char *tp,
int index
);
extern int pn2SetGasAsPerfectAt_(
double *pressA,
double *tempK,
int *index
);
extern void pn2checkgas_(int *index);
extern double pn2orift_
(
double *pa,
double *ta,
double *pb,
double *tb,
double *area,
double *hdia,
double *coefab,
double *coefba,
double *lamcab,
double *lamcba,
int *fi,
int *ic
);
extern int pn2rtabprops_
(
char *name,
double *xvalues,
int *num
);
extern double pnturbbfpower_
(
double *pressup, double *tempup, double *pressdown, double *tempdown,
double *dhturbin, double *dhturbout, double *dmc, double *eff, double *dmturb,
double *BFarea, double *cqbf, int *gi, int *reg1
);
extern double pnturbtorque_
(
double *w, double *Pmec
);
extern void pn2seteosuserd_(int index);
extern void tp2setatp_
(
double *patmos
);
extern double tp2getatp_();
extern void tp2setlambda_
(
double *lbda
);
extern void tp2RegisterPerfectGasProp_
(
double cp,
double cv,
double mu,
double lam,
int index
);
extern void tp2RegisterRealGasProp_
(
char *tp0, double *rp1, double *rp2,
double *rp3, int *eosind, int *index
);
extern void tp3RegisterPerfectGasProp_
(
double cp,
double cv,
double mu,
double lam,
double tmin,
double tmax,
int index
);
extern void RegisterTpGasProp_
(
double *rp,
char *tp,
int index
);
extern void tp2CreateMixtureProp_
(
double *lrp,
int *lip
);
extern void tpcheckgas_
(
int *index
);
extern void tpcheckpt_
(
double *p,
double *temp,
int *index
);
extern double tpcmpti_
(
double *pr,
double *p,
double *temp,
int *index
);
extern double tpcppti_
(
double *p,
double *temp,
int *index
);
extern double tpcvpti_
(
double *p,
double *temp,
int *index
);
extern double tpgpti_
(
double *p,
double *temp,
int *index
);
extern double tpgspti_
(
double *p,
double *temp,
int *index
);
extern double tphpti_
(
double *p,
double *temp,
int *index
);
extern double tplampti_
(
double *p,
double *temp,
int *index
);
extern double tpalphapti_
(
double *p,
double *temp,
int *index
);
extern double tpcspti_
(
double *p,
double *temp,
int *index
);
extern double tpmupti_
(
double *p,
double *temp,
int *index
);
extern double tpnupti_
(
double *p,
double *temp,
int *index
);
extern double tppcpti_
(
double *p,
double *temp,
int *index
);
extern double tprhopti_
(
double *p,
double *temp,
int *index
);
extern double tpri_
(
int *index
);
extern void tpsetuserd_
(
int index
);
extern double tpzpti_
(
double *p,
double *temp,
int *index
);
extern double tpgeta1b1_
(
double *delta,
double *rc,
double *hdia,
double *A1,
double *B1
);
extern double tporift_
(
double *pa,
double *ta,
double *pb,
double *tb,
double *area,
double *hdia,
double *coefab,
double *coefba,
double *lamcab,
double *lamcba,
int *fi,
int *ic
);
extern void tp2pipefr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *v,
double *ff,
double *dh1,
double *dm1,
double *dh2,
double *dm2,
double *cm,
double *c,
int *gi,
int *reg1,
int *reg2
);
extern void tp2pipifr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *dm1,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *v,
double *ff,
double *dm1dot,
double *dh1,
double *c,
int *reg,
int *gi
);
extern void tp2pipefrber_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *diam,
double *rr,
double *l,
double *area,
double *v,
double *re,
double *ff,
double *dh1,
double *dm1,
double *dh2,
double *dm2,
double *c,
int *gi,
int *reg
);
extern void tp2rcqfix_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *area,
double *cqmax,
int *gi,
double *cm,
double *gasvel,
int *reg
);
extern void tp2rcqnor_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *b,
double *c,
int *gi,
double *cm,
double *gasvel,
int *reg
);
extern void tp2rcqper_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *area,
double *cq,
int *gi,
double *cm,
double *gasvel,
int *reg
);
extern void tppipefr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *ff,
double *dh1,
double *dm1,
double *dh2,
double *dm2,
double *cm,
double *c,
int *gi,
int *reg1,
int *reg2
);
extern void tppipifr_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *dm1,
double *diam,
double *rr,
double *l,
double *area,
double *re,
double *v,
double *ff,
double *dm1dot,
double *dh1,
double *c,
int *reg,
int *gi
);
extern void tppipefrber_
(
double *p1,
double *t1,
double *p2,
double *t2,
double *diam,
double *rr,
double *l,
double *area,
double *v,
double *re,
double *ff,
double *dh1,
double *dm1,
double *dh2,
double *dm2,
double *c,
int *gi,
int *reg
);
extern void tprcqfix_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *area,
double *cq,
int *gi,
double *cm,
double *gasvel,
int *reg
);
extern void tprcqnor_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *b,
double *c,
int *gi,
double *cm,
double *gasvel,
int *reg
);
extern void tprcqper_
(
double *dh1,
double *dm1,
double *temp1,
double *press1,
double *temp2,
double *press2,
double *area,
double *cq,
int *gi,
double *cm,
double *gasvel,
int *reg
);
extern int tprtabprops_
(
char *name,
double *xvalues,
int *num
);
extern double tpsmooth_
(
double *f1,
double *f2,
double *x,
double *x1,
double *x2
);
extern void tpvol_
(
double *dtemp,
double *dpress,
double *mgas,
double *temp,
double *press,
double *sdm,
double *sdh,
double *volt,
double *dvol,
double *dq,
int *gi
);
#endif /* PN_PUBLIC_H */