00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <stdio.h>
00011 #include <stdlib.h>
00012 #include <math.h>
00013 #include "constrel.h"
00014 #include "soil1mat.h"
00015 #include "globalt.h"
00016
00017 soil1mat::soil1mat()
00018 {
00019 mw = 18.01528;
00020 ma = 28.9645;
00021 gasr = 8314.41;
00022
00023 t0 = 273.15;
00024 p0 = 101325.0;
00025 tcr = 647.3;
00026 }
00027 soil1mat::~soil1mat()
00028 {}
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 double soil1mat::_dg()
00042 {
00043 double dg;
00044
00045 dg = 2.6e-5;
00046
00047 return(dg);
00048 }
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058 double soil1mat::_alpha()
00059 {
00060 double alpha,ks,kt;
00061
00062 ks = _ks();
00063 kt = _kt();
00064
00065 alpha = 1.0 - kt/ks;
00066
00067
00068 return(alpha);
00069 }
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 double soil1mat::_ks()
00081 {
00082 return(0.14e10);
00083 }
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 double soil1mat::_kt()
00095 {
00096 double kt,emod,nu;
00097
00098 emod = _emod();
00099 nu = _nu();
00100
00101 kt = emod/(3.0*(1.0 - 2.0*nu));
00102
00103 return(kt);
00104 }
00105
00106
00107
00108
00109
00110
00111
00112
00113 double soil1mat::_emod()
00114 {
00115 return(60000000.0);
00116 }
00117
00118
00119
00120
00121
00122
00123
00124 double soil1mat::_nu()
00125 {
00126 return(0.2857);
00127 }
00128
00129
00130
00131
00132
00133
00134
00135 double soil1mat::_betas()
00136 {
00137 return(0.9e-6);
00138 }
00139
00140
00141
00142
00143
00144
00145 double soil1mat::_rhocp()
00146 {
00147
00148
00149
00150
00151 return(40.0);
00152 }
00153
00154
00155
00156
00157
00158
00159 double soil1mat::_lambdaa()
00160 {
00161
00162
00163 return(5.55555e-05);
00164 }
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175 double soil1mat::sat(double pc,double t)
00176 {
00177 double sw,pb,lam,sirr;
00178
00179 pb = 133813.0;
00180 sirr = 0.3216;
00181 lam = 2.308;
00182
00183 sw = (1.0 - sirr)*pow((pb/pc),lam) + sirr;
00184
00185 return(sw);
00186 }
00187
00188
00189
00190
00191
00192
00193
00194
00195 double soil1mat::dsat_dpc(double pc,double t)
00196 {
00197 double dsw_dpc,pb,lam,sirr;
00198
00199 pb = 133813.0;
00200 sirr = 0.3216;
00201 lam = 2.308;
00202
00203 dsw_dpc = pow((pb/pc),lam)*(sirr - 1.0)*lam/pc;
00204
00205 return(dsw_dpc);
00206 }
00207
00208
00209
00210
00211
00212
00213
00214
00215 double soil1mat::dsat_dt(double pc,double t)
00216 {
00217 return(0.0);
00218 }
00219
00220
00221
00222
00223
00224
00225
00226 double soil1mat::_phi()
00227 {
00228 return(0.5);
00229 }
00230
00231
00232
00233
00234
00235
00236 double soil1mat::_kintr()
00237 {
00238
00239
00240 return(4.0e-3/3600.0/1000.0);
00241 }
00242
00243
00244
00245
00246
00247
00248
00249
00250 double soil1mat::_krg(double pc,double t)
00251 {
00252 double krg,se,lam,sw,sirr;
00253
00254 sirr = 0.3216;
00255 lam = 2.308;
00256 sw = sat(pc,t);
00257 se = (sw - sirr)/(1.0 - sirr);
00258 krg = (1.0 - se)*(1.0 - se)*(1.0 - pow(se,(2.0+lam)/lam));
00259
00260 return(krg);
00261 }
00262
00263
00264
00265
00266
00267
00268
00269
00270 double soil1mat::_krw(double pc,double t)
00271 {
00272 double krw,se,lam,sw,sirr;
00273
00274 sirr = 0.3216;
00275 lam = 2.308;
00276 sw = sat(pc,t);
00277 se = (sw - sirr)/(1.0 - sirr);
00278 krw = pow(se,(2.0+3.0*lam)/lam);
00279
00280 return(krw);
00281 }
00282
00283
00284
00285
00286
00287
00288 double soil1mat::_cps()
00289 {
00290
00291 return(0.0);
00292 }
00293
00294
00295
00296
00297
00298
00299
00300 double soil1mat::_rhos()
00301 {
00302 return(2000.0);
00303 }
00304
00305
00306
00307
00308
00309
00310
00311 void soil1mat::read(XFILE *in)
00312 {}
00313
00314
00315
00316
00317
00318
00319
00320 void soil1mat::print(FILE *out)
00321 {}