00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <math.h>
00030 #include "constrel.h"
00031 #include "onemediumc.h"
00032 #include "coupmatu.h"
00033 #include "coupmatl.h"
00034 #include "globalc.h"
00035 #include "global.h"
00036 #include "globalt.h"
00037 #include "consol_awf1c.h"
00038 #include "intpoints.h"
00039
00040
00041 con_awf1matc::con_awf1matc()
00042 {
00043 alpha = 1.0;
00044
00045 phi0 = 0.297;
00046
00047 rhos = 2000.0;
00048
00049 rhow = 1000.0;
00050 }
00051
00052 con_awf1matc::~con_awf1matc()
00053 {}
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 void con_awf1matc::read(XFILE *in)
00064 {
00065
00066 xfscanf (in,"%k%m","waterflowtype",&waterflowtype_kwdset, &model_type);
00067
00068 switch (model_type){
00069 case lewis_and_schrefler_coup:{
00070 xfscanf (in,"%lf %lf %lf", &alpha, &phi0, &rhos);
00071 break;
00072 }
00073 case kuklik_camclay_coup:{
00074 break;
00075 }
00076 default:{
00077 fprintf (stderr,"\n unknown model type is required");
00078 fprintf (stderr,"\n in function (%s, line %d).\n",__FILE__,__LINE__);
00079 }
00080 }
00081 }
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 void con_awf1matc::print(FILE *out)
00092 {
00093 fprintf(out," %d",model_type);
00094 switch (model_type){
00095 case lewis_and_schrefler_coup:{
00096 fprintf (out,"%lf %lf %lf", alpha, phi0, rhos);
00097 break;
00098 }
00099 case kuklik_camclay_coup:{
00100 break;
00101 }
00102 default:{
00103 fprintf (stderr,"\n unknown model type is required");
00104 fprintf (stderr,"\n in function (%s, line %d).\n",__FILE__,__LINE__);
00105 }
00106 }
00107
00108
00109 }
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 void con_awf1matc::rhs_volume (matrix &d,long ri,long ci,long ipp)
00123 {
00124 long m;
00125 m = d.m;
00126
00127 switch (m){
00128 case 1:{
00129 rhs1d1 (d,ri,ci,ipp);
00130 break;
00131 }
00132 case 2:{
00133 rhs2d1 (d,ri,ci,ipp);
00134 break;
00135 }
00136 case 3:{
00137 rhs3d1 (d,ri,ci,ipp);
00138 break;
00139 }
00140 default:{
00141 fprintf (stderr,"\n unknown number of components of stress tensor is required");
00142 fprintf (stderr,"\n in function (%s, line %d).\n",__FILE__,__LINE__);
00143 }
00144 }
00145 }
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156 void con_awf1matc::rhs1d1 (matrix &d,long ri,long ci,long ipp)
00157 {
00158 double f,pw;
00159 double g;
00160
00161 pw = Cmu->ip[ipp].av[0];
00162
00163 f = get_fu1(pw);
00164 g = Tp->gr1;
00165
00166 fillm(0.0,d);
00167 d[0][0] = f*g;
00168 }
00169
00170
00171
00172
00173
00174
00175
00176
00177 void con_awf1matc::rhs2d1 (matrix &d,long ri,long ci,long ipp)
00178 {
00179 double f,pw;
00180 double *g;
00181 g = new double [2];
00182
00183 pw = Cmu->ip[ipp].av[0];
00184
00185 f = get_fu1(pw);
00186
00187 g[0] = Tp->gr1;
00188 g[1] = Tp->gr2;
00189
00190 fillm(0.0,d);
00191 d[0][0] = f*g[0];
00192 d[1][0] = f*g[1];
00193 }
00194
00195
00196
00197
00198
00199
00200
00201
00202 void con_awf1matc::rhs3d1 (matrix &d,long ri,long ci,long ipp)
00203 {
00204 double f,pw;
00205 double *g;
00206 g = new double [3];
00207
00208 pw = Cmu->ip[ipp].av[0];
00209
00210 f = get_fu1(pw);
00211
00212 g[0] = Tp->gr1;
00213 g[1] = Tp->gr2;
00214 g[2] = Tp->gr3;
00215
00216 fillm(0.0,d);
00217 d[0][0] = f*g[0];
00218 d[1][0] = f*g[1];
00219 d[2][0] = f*g[2];
00220 }
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232 double con_awf1matc::get_sw(double pw)
00233 {
00234 double sw,kr;
00235 double hp,theta,expm;
00236
00237 switch (model_type){
00238 case lewis_and_schrefler_coup:{
00239 sw = 1.0 - (1.9722e-11)*pow(-pw,2.4279);
00240 break;
00241 }
00242 case kuklik_camclay_coup:{
00243 sw = 1.0;
00244 break;
00245 }
00246 default:{
00247 fprintf (stderr,"\n unknown model type is required");
00248 fprintf (stderr,"\n in function (%s, line %d).\n",__FILE__,__LINE__);
00249 }
00250 }
00251 return(sw);
00252 }
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262 double con_awf1matc::get_phi()
00263 {
00264 double phi;
00265
00266 phi = phi0;
00267
00268 return(phi);
00269 }
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280 double con_awf1matc::get_rhos()
00281 {
00282 return(rhos);
00283 }
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294 double con_awf1matc::get_kuw(double pw)
00295 {
00296 double s,kuw;
00297
00298 switch (model_type){
00299 case lewis_and_schrefler_coup:{
00300
00301 s = get_sw(pw);
00302
00303 kuw = -alpha*s;
00304 break;
00305 }
00306 case kuklik_camclay_coup:{
00307
00308 kuw = 1.0;
00309 break;
00310 }
00311 default:{
00312 fprintf (stderr,"\n unknown model type is required");
00313 fprintf (stderr,"\n in function (%s, line %d).\n",__FILE__,__LINE__);
00314 }
00315 }
00316
00317 return(kuw);
00318
00319 }
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330 double con_awf1matc::get_kwu(double pw)
00331 {
00332 double kwu;
00333
00334 kwu = 0.0;
00335
00336 return(kwu);
00337
00338 }
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349 double con_awf1matc::get_capuw(double pw)
00350 {
00351 double capuw;
00352
00353 capuw = 0.0;
00354
00355 return(capuw);
00356
00357 }
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368 double con_awf1matc::get_capwu(double pw)
00369 {
00370 double s,capwu;
00371
00372 switch (model_type){
00373 case lewis_and_schrefler_coup:{
00374 s = get_sw(pw);
00375 capwu = alpha*s;
00376 break;
00377 }
00378 case kuklik_camclay_coup:{
00379
00380 capwu = -1.0;
00381 break;
00382 }
00383 default:{
00384 fprintf (stderr,"\n unknown model type is required");
00385 fprintf (stderr,"\n in function (%s, line %d).\n",__FILE__,__LINE__);
00386 }
00387 }
00388 return(capwu);
00389
00390 }
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402 double con_awf1matc::get_fu1(double pw)
00403 {
00404 double sw,n,fu1;
00405
00406 sw = get_sw(pw);
00407 n = phi0;
00408
00409
00410 fu1 = 0.0;
00411
00412 return(fu1);
00413
00414 }