00001
00002
00003
00004
00005
00006
00007 #include <stdio.h>
00008 #include <stdlib.h>
00009 #include <math.h>
00010 #include "aliast.h"
00011 #include "threemedia.h"
00012 #include "multiphase.h"
00013 #include "gmultiphase.h"
00014 #include "constrel.h"
00015 #include "globalt.h"
00016 #include "glasgowmat.h"
00017 #include "meshtransfert.h"
00018
00019 med3::med3()
00020 {}
00021 med3::~med3()
00022 {}
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 void med3::matcond (matrix &d,long ri,long ci,long ipp)
00035 {
00036 long i;
00037
00038
00039 i = Tm->ip[ipp].idm;
00040
00041 switch (Tm->ip[ipp].tm){
00042 case concreteB:
00043 case baroghelB:
00044 case C60baroghelB:
00045 case C30baroghelB:
00046 case o30bazantB:
00047 case C60bazantB:{
00048 multiph mtph;
00049 mtph.matcond(d,ri,ci,ipp);
00050 break;
00051 }
00052 case glasgow:{
00053 Tm->tench[i].matcond(d,ri,ci,ipp);
00054 break;
00055 }
00056 case soilmat1:{
00057 gmultiph gmtph;
00058 gmtph.matcond(d,ri,ci,ipp);
00059 break;
00060 }
00061 case lincoupledmat:{
00062 Tm->lcmat[i].matcond (d,ri,ci,ipp);
00063 break;
00064 }
00065
00066 case salt2mat:{
00067 Tm->salt2[i].matcond(d,ri,ci,ipp);
00068 break;
00069 }
00070 case salt3mat:{
00071 Tm->salt3[i].matcond(d,ri,ci,ipp);
00072 break;
00073 }
00074
00075 default:{
00076 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00077 }
00078 }
00079
00080 }
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 void med3::matcond2 (matrix &d,long ri,long ci,long ipp)
00093 {
00094 long i;
00095
00096
00097 i = Tm->ip[ipp].idm;
00098
00099 switch (Tm->ip[ipp].tm){
00100 case concreteB:
00101 case baroghelB:
00102 case C60baroghelB:
00103 case C30baroghelB:
00104 case o30bazantB:
00105 case C60bazantB:{
00106 multiph mtph;
00107 mtph.matcond2(d,ri,ci,ipp);
00108 break;
00109 }
00110 case glasgow:{
00111 break;
00112 }
00113
00114 case soilmat1:{
00115 gmultiph gmtph;
00116 gmtph.matcond2(d,ri,ci,ipp);
00117 break;
00118 }
00119 case salt2mat:{
00120 Tm->salt2[i].matcond2 (d,ri,ci,ipp);
00121 break;
00122 }
00123 case salt3mat:{
00124 Tm->salt3[i].matcond2 (d,ri,ci,ipp);
00125 break;
00126 }
00127
00128 default:{
00129 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00130 }
00131 }
00132 }
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144 void med3::matcap (double &c,long ri,long ci,long ipp)
00145 {
00146 long i;
00147
00148
00149 i = Tm->ip[ipp].idm;
00150
00151 switch (Tm->ip[ipp].tm){
00152 case concreteB:
00153 case baroghelB:
00154 case C60baroghelB:
00155 case C30baroghelB:
00156 case o30bazantB:
00157 case C60bazantB:{
00158 multiph mtph;
00159 mtph.matcap(c,ri,ci,ipp);
00160 break;
00161 }
00162 case glasgow:{
00163 Tm->tench[i].matcap(c,ri,ci,ipp);
00164 break;
00165 }
00166 case soilmat1:{
00167 gmultiph gmtph;
00168 gmtph.matcap(c,ri,ci,ipp);
00169 break;
00170 }
00171 case lincoupledmat:{
00172 Tm->lcmat[i].matcap (c,ri,ci,ipp);
00173 break;
00174 }
00175 case salt2mat:{
00176 Tm->salt2[i].matcap(c,ri,ci,ipp);
00177 break;
00178 }
00179 case salt3mat:{
00180 Tm->salt3[i].matcap(c,ri,ci,ipp);
00181 break;
00182 }
00183 default:{
00184 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00185 }
00186 }
00187 }
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199 void med3::rhs_volume (matrix &d,long ri, long ci,long ipp)
00200 {
00201 long i;
00202
00203
00204 i = Tm->ip[ipp].idm;
00205
00206 switch (Tm->ip[ipp].tm){
00207 case concreteB:
00208 case baroghelB:
00209 case C60baroghelB:
00210 case C30baroghelB:
00211 case o30bazantB:
00212 case C60bazantB:{
00213 multiph mtph;
00214
00215 mtph.rhs_volume(d,ri,ci,ipp);
00216 break;
00217 }
00218 case glasgow:{
00219 break;
00220 }
00221
00222 case soilmat1:{
00223 gmultiph gmtph;
00224 gmtph.rhs_volume(d,ri,ci,ipp);
00225 break;
00226 }
00227
00228 case salt2mat:{
00229
00230 break;
00231 }
00232 case salt3mat:{
00233
00234 break;
00235 }
00236
00237 default:{
00238 print_err ("unknown material type is required",__FILE__,__LINE__,__func__);
00239 }
00240 }
00241
00242 }
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256 double med3::transmission_transcoeff(double trc,long ri,long ci,long nn,long bc,long ipp)
00257 {
00258 double new_trc;
00259 long i;
00260
00261
00262 i = Tm->ip[ipp].idm;
00263
00264 switch (Tm->ip[ipp].tm){
00265 case concreteB:
00266 case baroghelB:
00267 case C60baroghelB:
00268 case C30baroghelB:
00269 case o30bazantB:
00270 case C60bazantB:{
00271 multiph mtph;
00272
00273 new_trc = mtph.transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00274 break;
00275 }
00276 case glasgow:{
00277 new_trc = Tm->tench[i].transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00278 break;
00279 }
00280
00281 case soilmat1:{
00282 gmultiph gmtph;
00283 new_trc = gmtph.transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00284 break;
00285 }
00286 case salt2mat:{
00287 new_trc = Tm->salt2[i].transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00288 break;
00289 }
00290 case salt3mat:{
00291 new_trc = Tm->salt3[i].transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00292 break;
00293 }
00294
00295 default:{
00296 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00297 }
00298 }
00299
00300 return(new_trc);
00301 }
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317 double med3::transmission_transcoeff(double trc,long ri,long ci,long nn,long bc,long ipp, int flag)
00318 {
00319 double new_trc;
00320 long i;
00321
00322
00323 i = Tm->ip[ipp].idm;
00324
00325 switch (Tm->ip[ipp].tm){
00326 case concreteB:
00327 case baroghelB:
00328 case C60baroghelB:
00329 case C30baroghelB:
00330 case o30bazantB:
00331 case C60bazantB:{
00332 multiph mtph;
00333
00334 new_trc = mtph.transmission_transcoeff(trc,ri,ci,nn,bc,ipp,flag);
00335 break;
00336 }
00337 case glasgow:{
00338 new_trc = Tm->tench[i].transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00339 break;
00340 }
00341
00342 case soilmat1:{
00343 gmultiph gmtph;
00344 new_trc = gmtph.transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00345 break;
00346 }
00347 case salt2mat:{
00348 new_trc = Tm->salt2[i].transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00349 break;
00350 }
00351 case salt3mat:{
00352 new_trc = Tm->salt3[i].transmission_transcoeff(trc,ri,ci,nn,bc,ipp);
00353 break;
00354 }
00355
00356 default:{
00357 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00358 }
00359 }
00360
00361 return(new_trc);
00362 }
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378 double med3::transmission_nodval(double nodval,double trc2,long ri,long ci,long nn,long bc,long ipp)
00379 {
00380 double new_nodval;
00381 long i;
00382
00383
00384 i = Tm->ip[ipp].idm;
00385
00386 switch (Tm->ip[ipp].tm){
00387 case concreteB:
00388 case baroghelB:
00389 case C60baroghelB:
00390 case C30baroghelB:
00391 case o30bazantB:
00392 case C60bazantB:{
00393 multiph mtph;
00394
00395 new_nodval = mtph.transmission_nodval(nodval,trc2,ri,ci,nn,bc,ipp);
00396 break;
00397 }
00398 case glasgow:{
00399 new_nodval = Tm->tench[i].transmission_nodval(nodval,trc2,ri,ci,nn,bc,ipp);
00400 break;
00401 }
00402
00403 case soilmat1:{
00404 gmultiph gmtph;
00405 new_nodval = gmtph.transmission_nodval(nodval,trc2,ri,ci,nn,bc,ipp);
00406 break;
00407 }
00408 case salt2mat:{
00409 new_nodval = Tm->salt2[i].transmission_nodval(nodval,ri,ci,nn,bc,ipp);
00410 break;
00411 }
00412 case salt3mat:{
00413 new_nodval = Tm->salt3[i].transmission_nodval(nodval,ri,ci,nn,bc,ipp);
00414 break;
00415 }
00416
00417 default: {
00418 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00419 }
00420 }
00421
00422 return(new_nodval);
00423 }
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439 double med3::transmission_flux(double nodval,double trc2,long ri,long ci,long nn,long bc,long ipp)
00440 {
00441 double flux;
00442 long i;
00443
00444
00445 i = Tm->ip[ipp].idm;
00446
00447 switch (Tm->ip[ipp].tm){
00448 case concreteB:
00449 case baroghelB:
00450 case C60baroghelB:
00451 case C30baroghelB:
00452 case o30bazantB:
00453 case C60bazantB:{
00454 multiph mtph;
00455
00456 flux = mtph.transmission_flux(nodval,trc2,ri,ci,nn,bc,ipp);
00457 break;
00458 }
00459 case glasgow:{
00460 flux = Tm->tench[i].transmission_flux(nodval,trc2,ri,ci,nn,bc,ipp);
00461 break;
00462 }
00463
00464 case soilmat1:{
00465 gmultiph gmtph;
00466 flux = gmtph.transmission_flux(nodval,trc2,ri,ci,nn,bc,ipp);
00467 break;
00468 }
00469 case salt2mat:{
00470 flux = Tm->salt2[i].transmission_flux(nodval,ri,ci,nn,bc,ipp);
00471 break;
00472 }
00473 case salt3mat:{
00474 flux = Tm->salt3[i].transmission_flux(nodval,ri,ci,nn,bc,ipp);
00475 break;
00476 }
00477
00478 default:{
00479 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00480 }
00481 }
00482
00483 return(flux);
00484 }
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498 double med3::compute_othervalues (long compother,long ipp,double *r)
00499 {
00500 double other;
00501
00502 switch (Tm->ip[ipp].tm){
00503 case glasgow:{
00504 other = Tm->tench[Tm->ip[ipp].idm].get_othervalue(compother,ipp,r);
00505 break;
00506 }
00507 case concreteB:
00508 case baroghelB:
00509 case C60baroghelB:
00510 case C30baroghelB:
00511 case o30bazantB:
00512 case C60bazantB:
00513 {
00514 multiph mtph;
00515
00516 other = mtph.get_othervalue(compother,ipp,r);
00517 break;
00518 }
00519
00520 case soilmat1:{
00521 gmultiph gmtph;
00522 other = gmtph.get_othervalue(compother,ipp,r);
00523 break;
00524 }
00525
00526 case salt2mat:{
00527
00528 other=0;
00529 break;
00530 }
00531 case salt3mat:{
00532
00533 other=0;
00534 break;
00535 }
00536
00537 default:{
00538 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00539 }
00540 }
00541
00542 return(other);
00543 }
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554 void med3::print_othervaluesnames (FILE *out,long ipp,long compother)
00555 {
00556 switch (Tm->ip[ipp].tm){
00557 case glasgow:{
00558 Tm->tench[Tm->ip[ipp].idm].print_othervalue_name(out,compother);
00559 break;
00560 }
00561 case concreteB:
00562 case baroghelB:
00563 case C60baroghelB:
00564 case C30baroghelB:
00565 case o30bazantB:
00566 case C60bazantB:{
00567 multiph mtph;
00568
00569 mtph.print_othervalue_name(out,compother);
00570 break;
00571 }
00572
00573 case soilmat1:{
00574 gmultiph gmtph;
00575 gmtph.print_othervalue_name(out,compother);
00576 break;
00577 }
00578
00579 default:{
00580 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00581 }
00582 }
00583 }
00584
00585