00001 #ifndef DISCMAT_H
00002 #define DISCMAT_H
00003
00004 #include <stdio.h>
00005 #include "genfile.h"
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 class discmat
00020 {
00021 public:
00022 discmat (void);
00023 ~discmat (void);
00024
00025 void matcond (matrix &d,long ri,long ci,long ipp);
00026 void matcond2 (matrix &d,long ri,long ci,long ipp);
00027 void matcap (double &c,long ri,long ci,long ipp);
00028
00029 void matcond1d (matrix &d,long ri,long ci,long ipp);
00030 void matcond2d (matrix &d,long ri,long ci,long ipp);
00031 void matcond3d (matrix &d,long ri,long ci,long ipp);
00032 void matcond4d (matrix &d,long ri,long ci,long ipp);
00033 void matcond2d2 (matrix &d,long ri,long ci,long ipp);
00034
00035 void read (XFILE *in);
00036 void print(FILE *out);
00037
00038 double k11 (double x1,double x2,long ipp);
00039 double k12 (double x1,double x2,long ipp);
00040
00041 double k21 (double x1,double x2,long ipp);
00042 double k22 (double x1,double x2,long ipp);
00043
00044 double c11 (double x1,double x2,long ipp);
00045 double c12 (double x1,double x2,long ipp);
00046
00047 double c21 (double x1,double x2,long ipp);
00048 double c22 (double x1,double x2,long ipp);
00049
00050
00051 void auxiliarydata (double x1,double x2);
00052
00053 double transmission_transcoeff(double trc,long ri,long ci,long nn,long bc,long ipp);
00054 double transmission_nodval(double nodval,long ri,long ci,long nn,long bc,long ipp);
00055 double transmission_flux(double nodval,long ri,long ci,long nn,long bc,long ipp);
00056
00057 double get_transmission_nodval_11(double bv,double x1,double x2,long bc,long ipp);
00058 double get_transmission_transcoeff_11(double x1,double x2,long bc,long ipp);
00059 double get_transmission_flux_11(double bv,double x1,double x2,long bc,long ipp);
00060
00061
00062 double get_othervalue(long compother,long ipp, double x1,double x2);
00063 void print_othervalue_name(FILE *out,long compother);
00064 double pgws(double x1,double x2);
00065 double permeabilitavodnipary(double x1,double x2);
00066 void inverze_sorption_izoterm_data(double x1, double &fi, double &dfi);
00067 void sisotherm(int kod, double x1,double &fiw, double &dfdw);
00068 double linear_data(int kod, double x1,double x2);
00069 double kapa(int kod, double x1,double x2);
00070 double mw, ma, gasr;
00071 void values_correction (vector & nv,long ipp);
00072
00073 void kapa_values (int kod, long ipp,double x1, double xpv, double ineq1, double &kapa);
00074 void sorption_izoterms_values(int kod, long ipp, double x1,double xpv, double ineq1, double & fi, double & dfdw);
00075
00076
00077 void water_content_relhum (long nid,double *in,double *inp,double *ineq, double *out);
00078 void get_moisture (long nid,double in,double *inp, double &out);
00079
00080 void initvalues (long ipp,long ido);
00081
00082 void give_values (long ipp,double *av, double *pv, double *eq);
00083 void aux_values (long ipp,double *in,double *inp, double *ineq,double *out);
00084 void save_values (long ipp,double *out);
00085 void aux_values_elements (long ipp,double *in,double *inp, double *ineq,double *out);
00086
00087 double derivation_saturation_water_vapour_pressure_temperature(double x1, double x2);
00088 double latent_heat_of_evaporation_of_water(double x1, double x2);
00089 void sorption_izotherm_derivation(double x1, double x2, double & derfi);
00090 void give_data_si_root_dfidw(double x1, double x2,double rh_hyg, double w_sat, double w_hyg, double shift_w, double & dfdw);
00091 double sortpion_isotherm_root_shifted(double x1, double w_hyg, double rh_hyg);
00092 double get_rel_hum(double w);
00093 void give_data_si_root_fi(double x1, double x2, double w_hyg, double w_sat, double rh_hyg, double shift_w, double & relh);
00094 double derivation_dy_dx (int matchar, double prom, int pomk1, int pomk2);
00095
00096 double get_moisture2 ( double rh);
00097 void get_rel_hum2 (double w,double &fi, double &dfdw);
00098
00099 private:
00100 int kd;
00101 double a1,a2,a3;
00102 int MatChar [20];
00103 double MatConst [20];
00104 double MatData [20][4][150];
00105 double MatFunce [20][5];
00106 void CorD(int cislochar, int &kvyhl,double in,int rhw, double x, double & y, double & z, double &z2);
00107
00108 };
00109
00110 #endif
00111