Droplet Lagrangian Transient One-dimensional Reacting Code Implementation of both liquid and gas phase governing equations.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
4.3KB

  1. #ifndef SUNDIALS_DEF
  2. #define SUNDIALS_DEF
  3. #include <sundials/sundials_types.h>
  4. #include <nvector/nvector_openmp.h>
  5. #endif
  6. #ifndef PRINT_DEF
  7. #define PRINT_DEF
  8. #include <string.h> //for strings
  9. #include <string>
  10. #include <cstring>
  11. #include <stdio.h> //for printf,scanf
  12. #include <stdlib.h> //for atoi, atof
  13. #endif
  14. #ifndef CANTERA_DEF
  15. #define CANTERA_DEF
  16. #include <cantera/IdealGasMix.h>
  17. #include <cantera/transport.h>
  18. #endif
  19. #ifndef COOLPROP_DEF
  20. #define COOLPROP_DEF
  21. #include <CoolProp.h> //for gas-phase thermodynamic properties
  22. //#include <HumidAirProp.h>
  23. //#include <CPState.h>
  24. #endif
  25. #include "UserData.h"
  26. #include <vector> //add the vector module
  27. void REGRID(double* ydata,double* ydotdata,UserData data);
  28. void INTERPO(double* y,double* ydot,const size_t nvar,size_t nPts,const double XNEW[], const double XOLD[]);
  29. double maxTemperaturePosition(const double* y,const size_t nt,const size_t nvar,const double* x ,size_t nPts);
  30. double maxTemperature(const double* y,const size_t nt, const size_t nvar, size_t nPts);
  31. int maxTemperatureIndex(const double* y,const size_t nt,const size_t nvar ,size_t nPts);
  32. double maxCurvPositionR(const double* y, const size_t nt,
  33. const size_t nvar, const size_t nr, size_t nPts);
  34. int maxCurvIndexR(const double* y, const size_t nt,
  35. const size_t nvar, const size_t nr, size_t nPts);
  36. double maxGradPosition(const double* y, const size_t nt,
  37. const size_t nvar, const double* x, size_t nPts);
  38. int maxGradIndex(const double* y, const size_t nt,
  39. const size_t nvar, const double* x, size_t nPts);
  40. double maxCurvPosition(const double* y, const size_t nt,
  41. const size_t nvar, const double* x, size_t nPts);
  42. int maxCurvIndex(const double* y, const size_t nt,
  43. const size_t nvar, const double* x, size_t nPts);
  44. double isothermPosition(const double* y, const double T, const size_t nt,
  45. const size_t nvar, const double* x, const size_t nPts);
  46. int setAlgebraicVariables(N_Vector *id,UserData data,const double* ydata);
  47. inline double calc_area(double x,int* i);
  48. void updateSolution(double* y, double* ydot, const size_t nvar,
  49. const double xOld[],const double xNew[],const size_t npts);
  50. void readInitialCondition(FILE* input, double* ydata, const size_t nvar, const size_t nr, const size_t nPts);
  51. double systemMass(double* ydata, UserData data);
  52. int initializePsiGrid(double* ydata, double* psidata, UserData data);
  53. int setInitialCondition(N_Vector* y,
  54. N_Vector* ydot,
  55. UserData data);
  56. inline void setGas(UserData data, double *ydata, size_t gridPoint);
  57. void getTransport(UserData data,
  58. double *ydata,
  59. size_t gridPoint,
  60. double *rho,
  61. double *lambda,
  62. double *YV);
  63. int residue(double t,
  64. N_Vector y,
  65. N_Vector ydot,
  66. N_Vector res,
  67. void *user_data);
  68. void trackFlameOH(N_Vector y,UserData data);
  69. void trackFlame(N_Vector y,UserData data);
  70. size_t BathGasIndex(UserData data);
  71. size_t oxidizerIndex(UserData data);
  72. inline double Qdot(double* t,
  73. double* x,
  74. double* ignTime,
  75. double* kernelSize,
  76. double* maxQdot);
  77. void printSpaceTimeHeader(UserData data);
  78. void printSpaceTimeOutput(double t, N_Vector* y, FILE* output, UserData data);
  79. void printSpaceTimeRates(double t, N_Vector ydot, UserData data);
  80. void printGlobalHeader(UserData data);
  81. void printGlobalVariables(double t, N_Vector* y, N_Vector* ydot, UserData data);
  82. void printSpaceTimeOutputInterpolated(double t, N_Vector y, UserData data);
  83. void writeRestart(double t, N_Vector* y, N_Vector* ydot, FILE* output, UserData data);
  84. void readRestart(N_Vector* y, N_Vector* ydot, FILE* input, UserData data);
  85. void getTimescale(UserData data, N_Vector* y);
  86. void printTimescaleHeader(UserData data);
  87. void printTimescaleOutput(double t,N_Vector* y,FILE* output,UserData data);
  88. void floorSmallValue(UserData data, N_Vector* y);
  89. void resetTolerance(UserData data, N_Vector* y,N_Vector* atolv);
  90. void getReactions(UserData data,N_Vector* y,FILE* output);
  91. void getSpecies(UserData data,N_Vector* y,FILE* output);
  92. double getLiquidRho(double dropMole[],double temp,double pres);
  93. double getLiquidCp(double dropMole[],double temp,double pres);
  94. double getLiquidHv(double dropMole[],double temp,double pres);
  95. double getLiquidMaxT(double dropMole[],double pres);