/****************************************************************************** * 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 */