00001
00002
00003
00004
00005
00006
00007 #include <stdio.h>
00008 #include <stdlib.h>
00009 #include <math.h>
00010 #include "aliast.h"
00011 #include "twomedia.h"
00012 #include "globalt.h"
00013
00014 med2::med2()
00015 {
00016
00017 scale_w = 1.0;
00018 scale_t = 1.0;
00019 }
00020 med2::~med2()
00021 {}
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 void med2::matcond (matrix &d,long ri,long ci,long ipp)
00034 {
00035 long i;
00036
00037
00038 i = Tm->ip[ipp].idm;
00039
00040 switch (Tm->ip[ipp].tm){
00041 case isotransmat:{
00042 Tm->itrm[i].matcond(d,ri,ci,ipp);
00043 break;
00044 }
00045 case nlisotransmat:{
00046 Tm->nlitrm[i].matcond(d,ri,ci,ipp);
00047 break;
00048 }
00049 case homomat:{
00050 Tm->hommat[i].matcond(d,ri,ci,ipp);
00051 break;
00052 }
00053 case damisotransmat:{
00054 Tm->damitrm[i].matcond(d,ri,ci,ipp);
00055 break;
00056 }
00057 case bazantpedersen:{
00058 Tm->bazped[i].matcond(d,ri,ci,ipp);
00059 break;
00060 }
00061 case pedersen:{
00062 Tm->ped[i].matcond(d,ri,ci,ipp);
00063 break;
00064 }
00065 case kunzel:{
00066 Tm->kun[i].matcond(d,ri,ci,ipp);
00067 break;
00068 }
00069 case kunzel2:{
00070 Tm->kun2[i].matcond(d,ri,ci,ipp);
00071 break;
00072 }
00073 case moistheat:{
00074 Tm->moisth[i].matcond(d,ri,ci,ipp);
00075 break;
00076 }
00077 case grunewald:{
00078 Tm->grunw[i].matcond(d,ri,ci,ipp);
00079 break;
00080 }
00081 case simplediscmat:{
00082 Tm->sdmat[i].matcond(d,ri,ci,ipp);
00083 break;
00084 }
00085 case devries:{
00086 Tm->dvries[i].matcond(d,ri,ci,ipp);
00087 break;
00088 }
00089 case milly:{
00090 Tm->mill[i].matcond(d,ri,ci,ipp);
00091 break;
00092 }
00093 case lincoupledmat:{
00094 Tm->lcmat[i].matcond (d,ri,ci,ipp);
00095 break;
00096 }
00097 case salt1mat:{
00098 Tm->salt1[i].matcond(d,ri,ci,ipp);
00099 break;
00100 }
00101 case consolawf2:{
00102 Tm->consol_awf2[i].matcond(d,ri,ci,ipp);
00103 break;
00104 }
00105 default:{
00106 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00107 }
00108 }
00109 }
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 void med2::matcond2 (matrix &d,long ri,long ci,long ipp)
00122 {
00123 long i;
00124
00125
00126 i = Tm->ip[ipp].idm;
00127
00128 switch (Tm->ip[ipp].tm){
00129 case isotransmat:{
00130 break;
00131 }
00132 case nlisotransmat:{
00133 break;
00134 }
00135 case homomat:{
00136 break;
00137 }
00138 case damisotransmat:{
00139 break;
00140 }
00141 case bazantpedersen:{
00142 Tm->bazped[i].matcond2(d,ri,ci,ipp);
00143 break;
00144 }
00145 case pedersen:{
00146
00147 break;
00148 }
00149 case kunzel:{
00150
00151 break;
00152 }
00153 case kunzel2:{
00154
00155 break;
00156 }
00157 case moistheat:{
00158
00159 break;
00160 }
00161 case grunewald:{
00162
00163 break;
00164 }
00165 case simplediscmat:{
00166
00167 break;
00168 }
00169 case devries:{
00170
00171 break;
00172 }
00173 case milly:{
00174
00175 break;
00176 }
00177 case lincoupledmat:{
00178 break;
00179 }
00180 case salt1mat:{
00181
00182 break;
00183 }
00184 case consolawf2:{
00185
00186 break;
00187 }
00188 case richardsmat:{
00189 Tm->richar[i].matcond2 (d,ri,ci,ipp);
00190 break;
00191 }
00192 default:{
00193 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00194 }
00195 }
00196 }
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208 void med2::matcap (double &c,long ri,long ci,long ipp)
00209 {
00210 long i;
00211
00212
00213 i = Tm->ip[ipp].idm;
00214
00215 switch (Tm->ip[ipp].tm){
00216 case isotransmat:{
00217 Tm->itrm[i].matcap(c,ri,ci,ipp);
00218 break;
00219 }
00220 case nlisotransmat:{
00221 Tm->nlitrm[i].matcap(c,ri,ci,ipp);
00222 break;
00223 }
00224 case homomat:{
00225 Tm->hommat[i].matcap(c,ri,ci,ipp);
00226 break;
00227 }
00228 case damisotransmat:{
00229 Tm->damitrm[i].matcap(c,ri,ci,ipp);
00230 break;
00231 }
00232 case bazantpedersen:{
00233 Tm->bazped[i].matcap(c,ri,ci,ipp);
00234 break;
00235 }
00236 case pedersen:{
00237 Tm->ped[i].matcap(c,ri,ci,ipp);
00238 break;
00239 }
00240 case kunzel:{
00241 Tm->kun[i].matcap(c,ri,ci,ipp);
00242 break;
00243 }
00244 case kunzel2:{
00245 Tm->kun2[i].matcap(c,ri,ci,ipp);
00246 break;
00247 }
00248 case moistheat:{
00249 Tm->moisth[i].matcap(c,ri,ci,ipp);
00250 break;
00251 }
00252 case grunewald:{
00253 Tm->grunw[i].matcap(c,ri,ci,ipp);
00254 break;
00255 }
00256 case simplediscmat:{
00257 Tm->sdmat[i].matcap(c,ri,ci,ipp);
00258 break;
00259 }
00260 case devries:{
00261 Tm->dvries[i].matcap(c,ri,ci,ipp);
00262 break;
00263 }
00264 case milly:{
00265 Tm->mill[i].matcap(c,ri,ci,ipp);
00266 break;
00267 }
00268 case lincoupledmat:{
00269 Tm->lcmat[i].matcap (c,ri,ci,ipp);
00270 break;
00271 }
00272 case salt1mat:{
00273 Tm->salt1[i].matcap(c,ri,ci,ipp);
00274 break;
00275 }
00276 case consolawf2:{
00277 Tm->consol_awf2[i].matcap(c,ri,ci,ipp);
00278 break;
00279 }
00280 default:{
00281 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00282 }
00283 }
00284 }
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300 double med2::transmission_transcoeff(double trc,long ri,long ci,long nid,long bc,long ipp)
00301 {
00302 double new_trc;
00303 long i;
00304
00305
00306 i = Tm->ip[ipp].idm;
00307
00308 switch (Tm->ip[ipp].tm){
00309 case bazantpedersen:{
00310 new_trc = Tm->bazped[i].transmission_transcoeff (trc,ri,ci,nid,bc);
00311 break;
00312 }
00313 case pedersen:{
00314 new_trc = Tm->ped[i].transmission_transcoeff(trc,ri,ci,nid,bc,ipp);
00315 break;
00316 }
00317 case homomat:{
00318 new_trc = Tm->hommat[i].transmission_transcoeff(trc,ri,ci,nid,bc,ipp);
00319 break;
00320 }
00321 case kunzel:{
00322 new_trc = Tm->kun[i].transmission_transcoeff (trc,ri,ci,nid,bc);
00323 break;
00324 }
00325 case kunzel2:{
00326 new_trc = Tm->kun2[i].transmission_transcoeff(trc,ri,ci,nid,bc,ipp);
00327 break;
00328 }
00329 case moistheat:{
00330 new_trc = Tm->moisth[i].transmission_transcoeff(trc,ri,ci,nid,bc);
00331 break;
00332 }
00333 case grunewald:{
00334 new_trc = Tm->grunw[i].transmission_transcoeff(trc,ri,ci,nid,bc,ipp);
00335 break;
00336 }
00337 case simplediscmat:{
00338 new_trc = Tm->sdmat[i].transmission_transcoeff(trc,ri,ci,nid,bc,ipp);
00339 break;
00340 }
00341 case devries:{
00342 new_trc = Tm->dvries[i].transmission_transcoeff(trc,ri,ci,nid,bc,ipp);
00343 break;
00344 }
00345 case milly:{
00346 new_trc = Tm->mill[i].transmission_transcoeff(trc,ri,ci,nid,bc,ipp);
00347 break;
00348 }
00349 case lincoupledmat:{
00350 new_trc = trc;
00351 break;
00352 }
00353 default:{
00354 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00355 }
00356 }
00357
00358 return(new_trc);
00359 }
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377 double med2::transmission_nodval(double nodval,double trc2,long ri,long ci,long nid,long bc,long ipp)
00378 {
00379 double new_nodval;
00380 long i;
00381
00382
00383 i = Tm->ip[ipp].idm;
00384
00385 switch (Tm->ip[ipp].tm){
00386 case bazantpedersen:{
00387 new_nodval = Tm->bazped[i].transmission_nodval (nodval,trc2,ri,ci,nid,bc);
00388 break;
00389 }
00390 case pedersen:{
00391 new_nodval = Tm->ped[i].transmission_nodval(nodval,trc2,ri,ci,nid,bc,ipp);
00392 break;
00393 }
00394 case homomat:{
00395 new_nodval = Tm->hommat[i].transmission_nodval(nodval,trc2,ri,ci,nid,bc,ipp);
00396 break;
00397 }
00398 case kunzel:{
00399 new_nodval = Tm->kun[i].transmission_nodval (nodval,ri,ci,nid,bc);
00400 break;
00401 }
00402 case kunzel2:{
00403 new_nodval = Tm->kun2[i].transmission_nodval(nodval,trc2,ri,ci,nid,bc,ipp);
00404 break;
00405 }
00406 case moistheat:{
00407 new_nodval = Tm->moisth[i].transmission_nodval(nodval,ri,ci,nid,bc);
00408 break;
00409 }
00410 case grunewald:{
00411 new_nodval = Tm->grunw[i].transmission_nodval(nodval,ri,ci,nid,bc,ipp);
00412 break;
00413 }
00414 case simplediscmat:{
00415 new_nodval = Tm->sdmat[i].transmission_nodval(nodval,ri,ci,nid,bc,ipp);
00416 break;
00417 }
00418 case devries:{
00419 new_nodval = Tm->dvries[i].transmission_nodval(nodval,ri,ci,nid,bc,ipp);
00420 break;
00421 }
00422 case milly:{
00423 new_nodval = Tm->mill[i].transmission_nodval(nodval,ri,ci,nid,bc,ipp);
00424 break;
00425 }
00426 case lincoupledmat:{
00427 new_nodval = nodval;
00428 break;
00429 }
00430 default:{
00431 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00432 }
00433 }
00434
00435 return new_nodval;
00436 }
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454 double med2::transmission_flux (double nodval,double trc2,long ri,long ci,long nid,long bc,long ipp)
00455 {
00456 double flux;
00457 long i;
00458
00459
00460 i = Tm->ip[ipp].idm;
00461
00462 switch (Tm->ip[ipp].tm){
00463 case bazantpedersen:{
00464 flux = Tm->bazped[i].transmission_flux(nodval,trc2,ri,ci,nid,bc);
00465 break;
00466 }
00467 case pedersen:{
00468 flux = Tm->bazped[i].transmission_flux(nodval,trc2,ri,ci,nid,bc);
00469 break;
00470 }
00471 case homomat:{
00472 flux = Tm->hommat[i].transmission_flux(nodval,trc2,ri,ci,nid,bc,ipp);
00473 break;
00474 }
00475 case kunzel:{
00476 flux = Tm->kun[i].transmission_flux (nodval,ri,ci,nid,bc);
00477 break;
00478 }
00479 case kunzel2:{
00480 flux = Tm->kun2[i].transmission_flux(nodval,trc2,ri,ci,nid,bc,ipp);
00481 break;
00482 }
00483 case grunewald:{
00484 flux = Tm->grunw[i].transmission_flux(nodval,ri,ci,nid,bc,ipp);
00485 break;
00486 }
00487 case simplediscmat:{
00488 flux = Tm->sdmat[i].transmission_flux(nodval,ri,ci,nid,bc,ipp);
00489 break;
00490 }
00491 case devries:{
00492 flux = Tm->dvries[i].transmission_flux(nodval,ri,ci,nid,bc,ipp);
00493 break;
00494 }
00495 case milly:{
00496 flux = Tm->mill[i].transmission_flux(nodval,ri,ci,nid,bc,ipp);
00497 break;
00498 }
00499 default:{
00500 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00501 }
00502 }
00503
00504 return(flux);
00505 }
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518 double med2::compute_othervalues (long compother,long ipp,double *r)
00519 {
00520 long i;
00521 double other;
00522
00523
00524 i = Tm->ip[ipp].idm;
00525
00526 switch (Tm->ip[ipp].tm){
00527 case consolawf2:{
00528 double pw,pg;
00529
00530 pw = r[0];
00531 pg = r[1];
00532
00533 other = Tm->consol_awf2[i].get_othervalue(compother,pw,pg,ipp);
00534 break;
00535 }
00536 case nlisotransmat:{
00537 break;
00538 }
00539 case bazantpedersen:{
00540 double w,t;
00541
00542 w = r[0];
00543 t = r[1];
00544
00545 other = Tm->bazped[i].get_othervalue(compother,w,t);
00546 break;
00547 }
00548 case pedersen:{
00549 double w,t;
00550
00551 w = r[0];
00552 t = r[1];
00553
00554 other = Tm->ped[i].get_othervalue(compother,w,t);
00555 break;
00556 }
00557 case homomat:{
00558 double rh,t;
00559
00560 rh = r[0];
00561 t = r[1];
00562
00563 other = Tm->hommat[i].get_othervalue(compother,rh,t,ipp);
00564 break;
00565 }
00566 case kunzel:{
00567 double rh,t;
00568
00569 rh = r[0];
00570 t = r[1];
00571
00572 other = Tm->kun[i].get_othervalue(compother,rh,t,ipp);
00573 break;
00574 }
00575 case kunzel2:{
00576 double rh,t;
00577
00578 rh = r[0];
00579 t = r[1];
00580
00581 other = Tm->kun2[i].get_othervalue(compother,rh,t,ipp);
00582 break;
00583 }
00584 case moistheat:{
00585 double rh,t;
00586
00587 rh = r[0];
00588 t = r[1];
00589
00590 other = Tm->moisth[i].get_othervalue(compother,rh,t,ipp);
00591 break;
00592 }
00593 case grunewald:{
00594 double w,t;
00595
00596 w = r[0];
00597 t = r[1];
00598
00599 other = Tm->grunw[i].get_othervalue(compother,ipp,w,t,0);
00600 break;
00601 }
00602 case simplediscmat:{
00603 double w,t;
00604
00605 w = r[0];
00606 t = r[1];
00607
00608 other = Tm->sdmat[i].get_othervalue(compother,ipp,w,t);
00609 break;
00610 }
00611 case devries:{
00612 double w,t;
00613
00614 w = r[0];
00615 t = r[1];
00616
00617 other = Tm->dvries[i].get_othervalue(compother,ipp,w,t,0);
00618 break;
00619 }
00620 case milly:{
00621 double psi,t;
00622
00623 psi = r[0];
00624 t = r[1];
00625
00626 other = Tm->mill[i].get_othervalue(compother,ipp,psi,t);
00627 break;
00628 }
00629 case salt1mat:{
00630 double w,cf;
00631
00632 w = r[0];
00633 cf = r[1];
00634
00635
00636 break;
00637 }
00638 default:{
00639 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00640 }
00641 }
00642
00643 return(other);
00644 }
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654 void med2::print_othervaluesnames (FILE *out,long ipp,long compother)
00655 {
00656 long i;
00657
00658
00659 i = Tm->ip[ipp].idm;
00660
00661 switch (Tm->ip[ipp].tm){
00662 case nlisotransmat:{
00663 break;
00664 }
00665 case bazantpedersen:{
00666 Tm->bazped[i].print_othervalue_name(out,compother);
00667 break;
00668 }
00669 case consolawf2:{
00670 Tm->consol_awf2[i].print_othervalue_name(out,compother);
00671 break;
00672 }
00673 case pedersen:{
00674 Tm->ped[i].print_othervalue_name(out,compother);
00675 break;
00676 }
00677 case homomat:{
00678 Tm->hommat[i].print_othervalue_name(out,compother);
00679 break;
00680 }
00681 case kunzel:{
00682 Tm->kun[i].print_othervalue_name(out,compother);
00683 break;
00684 }
00685 case moistheat:{
00686 Tm->moisth[i].print_othervalue_name(out,compother);
00687 break;
00688 }
00689 case kunzel2:{
00690 Tm->kun2[i].print_othervalue_name(out,compother);
00691 break;
00692 }
00693 case grunewald:{
00694 Tm->grunw[i].print_othervalue_name(out,compother);
00695 break;
00696 }
00697 case simplediscmat:{
00698 Tm->sdmat[i].print_othervalue_name(out,compother);
00699 break;
00700 }
00701 case devries:{
00702 Tm->dvries[i].print_othervalue_name(out,compother);
00703 break;
00704 }
00705 case milly:{
00706 Tm->mill[i].print_othervalue_name(out,compother);
00707 break;
00708 }
00709 case salt1mat:{
00710 Tm->salt1[i].print_othervalue_name(out,compother);
00711 break;
00712 }
00713 default:{
00714 print_err("unknown material type is required",__FILE__,__LINE__,__func__);
00715 }
00716 }
00717
00718 }
00719