00001 #ifndef PED_H
00002 #define PED_H
00003
00004 #include "genfile.h"
00005
00006 class pedmat
00007 {
00008 public:
00009 pedmat();
00010 ~pedmat();
00011
00012 void matcond (matrix &d,long ri,long ci,long ipp);
00013 void matcap (double &c,long ri,long ci,long ipp);
00014
00015 void matcond1d (matrix &d,long ri,long ci,long ipp);
00016 void matcond2d (matrix &d,long ri,long ci,long ipp);
00017 void matcond3d (matrix &d,long ri,long ci,long ipp);
00018
00019 void matcond2 (matrix &d,long ri,long ci,long ipp);
00020
00021 void matcond1d_2 (matrix &d,long ri,long ci,long ipp);
00022 void matcond2d_2 (matrix &d,long ri,long ci,long ipp);
00023 void matcond3d_2 (matrix &d,long ri,long ci,long ipp);
00024
00025 double perm_ww(double w,double t);
00026 double perm_wt(double w,double t);
00027 double perm_tw(double w,double t);
00028 double perm_tt(double w,double t);
00029 double c_ww (double w,double t);
00030 double c_wt (double w,double t);
00031 double c_tw (double w,double t);
00032 double c_tt (double w,double t);
00033
00034 void values_correction (vector &nv);
00035 void moisture_check(double &w,double t,long ipp);
00036
00037 double get_delta_gw(double phi,double w);
00038 double get_kw_g(double w);
00039 double sorption_isotherm(double phi);
00040 double inverse_sorption_isotherm(double w);
00041 double suction_curve(double s);
00042 double inverse_suction_curve(double w,double t);
00043 double get_p_gws(double t);
00044
00045 double transmission_transcoeff(double trc,long ri,long ci,long nn,long bc,long ipp);
00046 double transmission_nodval(double nodval,double trc2,long ri,long ci,long nn,long bc,long ipp);
00047 double transmission_flux(double nodval,double trc2,long ri,long ci,long nn,long bc,long ipp);
00048
00049 double get_transmission_transcoeff_ww(double w,double t,long bc,long ipp);
00050 double get_transmission_nodval_ww(double bv,double w,double t,long bc,long ipp);
00051 double get_transmission_flux_ww(double bv,double w,double t,long bc,long ipp);
00052
00053 double get_transmission_transcoeff_tt(double w,double t,long bc,long ipp);
00054 double get_transmission_nodval_tt(double bv,double w,double t,long bc,long ipp);
00055 double get_transmission_flux_tt(double bv,double w,double t,long bc,long ipp);
00056
00057 double get_othervalue(long compother,double w,double t);
00058 void print_othervalue_name(FILE *out,long compother);
00059
00060 void read(XFILE *in);
00061 void print(FILE *out);
00062
00063
00064 private:
00065 double por;
00066 double a_0;
00067 double nn;
00068 double phi_c;
00069 double delta_wet;
00070 double delta_dry;
00071 double rho;
00072
00073 double ceff;
00074 double chieff;
00075
00076 double w_h_sorp;
00077 double n_sorp;
00078 double a_sorp;
00079 double mw;
00080 double gasr;
00081 double rhow;
00082 double awet,bwet;
00083 double k_wg;
00084 double ak,bk;
00085 double nk;
00086 double w_cr,w_cap,w_vac,w_98;
00087 double dhvap;
00088
00089 double get_dphi_dw(double w);
00090 double get_dphi_dw_hansen(double w);
00091 double sorption_isotherm_hansen(double w_h_s, double a_s, double n_s, double phi);
00092 double inverse_sorption_isotherm_hansen(double w);
00093 double inverse_sorption_isotherm_hansen(double w_h_s, double a_s, double n_s, double w);
00094 double sorption_isotherm_data_get_w(double phi);
00095 double inverse_sorption_isotherm_data_get_phi(double w);
00096 double inverse_sorption_isotherm_data_get_derivative(double w);
00097 void sorption_isotherm_data_read(XFILE *in);
00098 void sorption_isotherm_data_print(FILE *out);
00099 double get_dpgw_dt(double t, double phi);
00100 double get_dpc_dw(double w, double t);
00101 double get_dpc_dt(double w, double t);
00102
00103
00104
00105 tablefunct *gf;
00106 int s_type;
00107 };
00108
00109 #endif