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 "C60bazant.h"
00015 #include "globalt.h"
00016
00017 C60bazmat::C60bazmat()
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 w1 = 163.0;
00028 c1 = 450.0;
00029
00030
00031 phi0 = 0.0825468;
00032 aphi = 0.00017417;
00033
00034
00035 k0 = 2.0e-18;
00036 ak = 6.29e-3;
00037
00038
00039 scr = 0.8;
00040 ag = 2.0;
00041
00042
00043 sir = 0.05;
00044 aw = 3.0;
00045 bw = 6.0;
00046
00047
00048 rhos = 2564.0;
00049
00050 fs = 1.0;
00051
00052
00053 lambdas0 = 1.9215152;
00054 alam = -0.0012525253;
00055
00056
00057 ac = -0.22626263;
00058 cps0 = 855.25758;
00059
00060
00061 hydren = 0.5e+6;
00062
00063 finv = 0.65;
00064
00065 fste = 0.36;
00066
00067 ddbw0 = 1.0e-20;
00068
00069
00070 dld = 8.0E-2;
00071
00072
00073 emod0 = 3.452222e+10;
00074
00075
00076 vcoeff = 0.18;
00077
00078
00079 betas = 3.0*10.0e-6;
00080
00081
00082 alpha = 0.5;
00083
00084
00085
00086 at = 1.0;
00087 bt = 15000.0;
00088
00089 acc = 1.876;
00090 }
00091 C60bazmat::~C60bazmat()
00092 {}
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102 double C60bazmat::sat(double pc,double t)
00103 {
00104 double sw,rh,tamb,tem,tt1,mt1,fcm,mt;
00105 state_eq tt;
00106
00107 tamb= 25.0;
00108 rh = tt.get_rh(pc,t);
00109
00110
00111 if (t < tcr){
00112 tem = t - 273.15;
00113 if (tem < tamb)
00114 tem = tamb;
00115 }
00116 else
00117 tem = tcr - 273.15;
00118
00119
00120 tt1 = ((tem+10.0)/(25.0+10.0))*((tem+10.0)/(25.0+10.0));
00121 mt1 = 1.04 - (tt1/(24.0+tt1));
00122 if(t < tcr){
00123 fcm = (tcr-t)/(tcr-298.15);
00124 mt = mt1*fcm;
00125 if(mt < 1.0e-4)
00126 mt = 1.0e-4;
00127 }
00128 else
00129 mt = 1.0e-4;
00130
00131
00132 sw = pow(rh,(1.0/mt));
00133
00134
00135 if(sw < 1.0e-3)
00136 {
00137 sw=1.0e-3;
00138 fprintf (Outt,"\n\n Uprava saturace, function sat (C60bazant.cpp)");
00139 }
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149 return(sw);
00150 }
00151
00152
00153
00154
00155
00156
00157
00158
00159 double C60bazmat::dsat_dpc(double pc,double t)
00160 {
00161 double dsw_dpc;
00162 double sw,rh,tamb,tem,tt1,mt1,fcm,mt;
00163 double ssmh,drhdc,dsdc;
00164 state_eq tt;
00165
00166 tamb= 25.0;
00167 rh = tt.get_rh(pc,t);
00168 drhdc = tt.get_drh_dpc(pc,t);
00169
00170
00171 if (t < tcr){
00172 tem = t - 273.15;
00173 if (tem < tamb)
00174 tem = tamb;
00175 }
00176 else
00177 tem = tcr - 273.15;
00178
00179
00180 tt1 = ((tem+10.0)/(25.0+10.0))*((tem+10.0)/(25.0+10.0));
00181 mt1 = 1.04 - (tt1/(24.0+tt1));
00182 if(t < tcr){
00183 fcm = (tcr-t)/(tcr-298.15);
00184 mt = mt1*fcm;
00185 if(mt<1.0e-4) mt=1.0e-4;
00186 }
00187 else{
00188 mt = 1.0e-4;
00189 }
00190
00191
00192 sw = pow(rh,(1.0/mt));
00193
00194
00195
00196 if(sw < 1.0e-3)
00197 {
00198 sw=1.0e-3;
00199 fprintf (Outt,"\n\n Uprava saturace, function dsat_dpc (C60bazant.cpp)");
00200 }
00201
00202 ssmh = sw/mt/rh;
00203 dsdc = ssmh*drhdc;
00204
00205
00206
00207
00208 dsw_dpc = dsdc;
00209
00210 return(dsw_dpc);
00211 }
00212
00213
00214
00215
00216
00217
00218
00219
00220 double C60bazmat::dsat_dt(double pc,double t)
00221 {
00222 double dsw_dt;
00223 double sw,rh,tamb,tem,tt1,mt1,fcm,mt,dtt1dt,dm1tdt,dfcmdt,dmtdt;
00224 double lnh,xfun,drhdt,ssmh,dsdt;
00225 state_eq tt;
00226
00227 tamb= 25.0;
00228 rh = tt.get_rh(pc,t);
00229 drhdt = tt.get_drh_dt(pc,t);
00230
00231
00232 if (t < tcr){
00233 tem = t - 273.15;
00234 if (tem < tamb)
00235 tem = tamb;
00236 }
00237 else
00238 tem = tcr - 273.15;
00239
00240
00241 tt1 = ((tem+10.)/(25.0+10.))*((tem+10.)/(25.0+10.));
00242 mt1 = 1.04 - (tt1/(24.+tt1));
00243 if(t < tcr){
00244 fcm = (tcr-t)/(tcr-298.15);
00245 mt = mt1*fcm;
00246 dtt1dt = 2.0*(tem+10.0)/((25.0+10.0)*(25.0+10.0));
00247 dm1tdt = -24.0*dtt1dt/((24.0+tt1)*(24.0+tt1));
00248 dfcmdt = -1.0/(tcr-298.15);
00249 if(mt<1.0e-4) mt=1.0e-4;
00250 }
00251 else{
00252 fcm = 0.0;
00253 mt = 1.0e-4;
00254 dtt1dt = 0.0;
00255 dm1tdt = 0.0;
00256 dfcmdt = 0.0;
00257 }
00258
00259 dmtdt = dm1tdt*fcm + mt1*dfcmdt;
00260
00261
00262 sw = pow(rh,(1.0/mt));
00263
00264
00265 lnh = log(rh);
00266
00267 if(sw < 1.0e-3)
00268 {
00269 sw=1.0e-3;
00270 fprintf (Outt,"\n\n Uprava saturace, function dsat_dt (C60bazant.cpp)");
00271 }
00272
00273
00274 if(t < tcr){
00275 xfun = drhdt - rh/mt*lnh*dmtdt;
00276 ssmh = sw/mt/rh;
00277 dsdt = ssmh*xfun;
00278 }
00279 else{
00280 xfun = drhdt - rh/mt*lnh*dmtdt ;
00281 ssmh = sw/mt/rh;
00282 dsdt = 0.0;
00283 }
00284
00285
00286
00287
00288 dsw_dt = dsdt;
00289
00290 return(dsw_dt);
00291 }
00292
00293
00294
00295
00296
00297
00298
00299 double C60bazmat::ssp()
00300 {
00301 return(0.55);
00302 }
00303
00304
00305
00306
00307
00308
00309
00310
00311 double C60bazmat::C60baz_phi()
00312 {
00313 double phi;
00314
00315 phi = phi0;
00316
00317
00318
00319
00320
00321
00322 return(phi);
00323 }
00324
00325
00326
00327
00328
00329
00330 double C60bazmat::C60baz_kintr()
00331 {
00332 double kintr;
00333
00334 kintr = k0;
00335
00336
00337
00338
00339
00340
00341 return(kintr);
00342 }
00343
00344
00345
00346
00347
00348
00349
00350
00351 double C60bazmat::C60baz_krg(double pc,double t)
00352 {
00353 double krg,s;
00354
00355 s = sat(pc,t);
00356
00357
00358
00359 krg = 1.0 - s;
00360
00361
00362
00363
00364 if (krg<0.0001){
00365 krg=0.0001;
00366 print_err("relative permeability was modified",__FILE__,__LINE__,__func__);
00367 }
00368
00369 return(krg);
00370 }
00371
00372
00373
00374
00375
00376
00377
00378
00379 double C60bazmat::C60baz_krw(double pc,double t)
00380 {
00381 double krw,s;
00382
00383 s = sat(pc,t);
00384
00385
00386
00387 krw = exp(10.0*log(s));
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399 return(krw);
00400 }
00401
00402
00403
00404
00405
00406
00407
00408
00409 double C60bazmat::C60baz_dd(double pc,double t)
00410 {
00411 double tau,dd;
00412
00413 tau = C60baz_tau(pc,t);
00414
00415 dd = tau*mw*ma/gasr;
00416
00417
00418 return(dd);
00419 }
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429 double C60bazmat::C60baz_deff(double pc,double pg,double t)
00430 {
00431 double deff,dd,phi,s,cdiff;
00432 state_eq tt;
00433
00434 dd = C60baz_dd(pc,t);
00435 phi = C60baz_phi();
00436 s = sat(pc,t);
00437 cdiff = tt.get_cdiff(pc,pg,t);
00438
00439 deff = dd*phi*(1.0 - s)*fs*cdiff;
00440
00441
00442
00443
00444
00445
00446 return(deff);
00447 }
00448
00449
00450
00451
00452
00453
00454 double C60bazmat::C60baz_cps()
00455 {
00456 double cps;
00457
00458 cps = cps0;
00459
00460 return(cps);
00461 }
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471 double C60bazmat::C60baz_rhocp(double pc,double pg,double t)
00472 {
00473 double s,phi,rhocp,rhow,rhog,rhogw,cps,cpw,cpga,cpgw,rhos;
00474 state_eq tt;
00475
00476 s = sat(pc,t);
00477 phi = C60baz_phi();
00478 rhow = tt.get_rhow(t);
00479 rhog = tt.get_rhog(pc,pg,t);
00480 rhogw = tt.get_rhogw(pc,t);
00481 cps = C60baz_cps();
00482 cpw = tt.get_cpw();
00483 cpga = tt.get_cpga();
00484 cpgw = tt.get_cpgw();
00485 rhos = C60baz_rhos();
00486
00487 rhocp = (1.0-phi)*rhos*cps + phi*(s*rhow*cpw + (1.0-s)*(rhog*cpga + rhogw*(cpgw-cpga)));
00488
00489 return(rhocp);
00490 }
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501 double C60bazmat::C60baz_tau(double pc,double t)
00502 {
00503 double phi,s,tau;
00504
00505 s = sat(pc,t);
00506 phi = C60baz_phi();
00507
00508
00509 tau = exp(1.0/3.0*log(phi))*exp(7.0/3.0*log(1.0-s));
00510
00511
00512 return(tau);
00513 }
00514
00515
00516
00517
00518
00519
00520 double C60bazmat::C60baz_lambdas()
00521 {
00522 double lambdas;
00523
00524 lambdas = lambdas0;
00525
00526
00527
00528
00529
00530 return(lambdas);
00531 }
00532
00533
00534
00535
00536
00537
00538
00539 double C60bazmat::C60baz_lambdaeff(double pc,double t)
00540 {
00541 double lambdaeff,lambdas,s,phi,rhow,rhos;
00542 state_eq tt;
00543
00544 s = sat(pc,t);
00545 phi = C60baz_phi();
00546 rhow = tt.get_rhow(t);
00547 lambdas = C60baz_lambdas();
00548 rhos = C60baz_rhos();
00549
00550 lambdaeff = lambdas*(1.0 + 4.0*phi*rhow*s/(1.0-phi)/rhos);
00551
00552 return(lambdaeff);
00553 }
00554
00555
00556
00557
00558
00559
00560 double C60bazmat::C60baz_rhos()
00561 {
00562
00563
00564
00565
00566
00567 return(rhos);
00568 }
00569
00570
00571
00572
00573
00574
00575
00576 double C60bazmat::C60baz_betas()
00577 {
00578 return(betas);
00579 }
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590 double C60bazmat::C60baz_hydw(double pc,double pg,double t)
00591 {
00592 double fhy,hydw;
00593
00594 if((t-t0)< 105.0){
00595 fhy = 0.0;
00596 }
00597 else{
00598 fhy = (1.0+sin(3.1416/2.0*(1.0-2.0*exp(-0.004*((t-t0)-105.0)))))/2.0;
00599 }
00600
00601 hydw = fste*finv*c1*fhy;
00602
00603 return(hydw);
00604 }
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614 double C60bazmat::C60baz_dehydw_dt(double pc,double pg,double t)
00615 {
00616 double dfhyt,dehydw_dt;
00617
00618 if((t-t0)< 105.0){
00619 dfhyt = 0.0;
00620 }
00621 else{
00622 dfhyt = (3.1416*0.004/2.0)*cos(3.1416/2.0*(1.0-2.0*exp(-0.004*((t-t0)-105.0))))*exp(-0.004*((t-t0)-105.0));
00623 }
00624
00625 dehydw_dt = fste*finv*c1*dfhyt;
00626
00627 return(dehydw_dt);
00628 }
00629
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639 double C60bazmat::C60baz_hydren(double pc,double pg,double t)
00640 {
00641 return(hydren);
00642 }
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652 double C60bazmat::C60baz_fste(double pc,double pg,double t)
00653 {
00654 return(fste);
00655 }
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665 double C60bazmat::C60baz_ddbw(double pc,double pg,double t)
00666 {
00667 double ddbw;
00668
00669 ddbw = ddbw0*exp(-1.0*t/(295.0));
00670 if (t > tcr)
00671 ddbw = ddbw0*exp(-1.0*tcr/(295.0));
00672
00673
00674
00675
00676
00677
00678 return(ddbw);
00679 }
00680
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690 double C60bazmat::C60baz_emod(double pc,double pg,double t)
00691 {
00692 double emod,ttc;
00693
00694 ttc = t - 273.15;
00695
00696 if (ttc <= 500.0)
00697 emod = 3.5604e10 - 54.089*1.0e6*ttc;
00698 else
00699 emod = 0.8560e10*exp((-54.089/8560.0)*(ttc-500.0));
00700
00701 return(emod);
00702 }
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713 double C60bazmat::C60baz_fct(double pc,double pg,double t)
00714 {
00715 double fct,ttc;
00716
00717 ttc = t - 273.15;
00718
00719 if (ttc <= 600.0)
00720 fct = (6.0 - 8.56e-3*ttc)*1.0e6;
00721 else
00722 fct = 0.864*1.0e6;
00723
00724 return(fct);
00725 }
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737 double C60bazmat::C60baz_xk0(double pc,double pg,double t)
00738 {
00739 double fct,emod,xk0;
00740
00741 fct = C60baz_fct(pc,pg,t);
00742 emod = C60baz_emod(pc,pg,t);
00743
00744 xk0 = fct/emod;
00745
00746 return(xk0);
00747 }
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758 double C60bazmat::C60baz_bcc(double pc,double pg,double t)
00759 {
00760 double bcc,ttc;
00761
00762 ttc = t - 273.15;
00763
00764 bcc = 1550.0*exp(-0.0015154*ttc);
00765
00766 return(bcc);
00767 }
00768
00769
00770
00771
00772
00773
00774 double C60bazmat::C60baz_alpha()
00775 {
00776 return(alpha);
00777 }
00778
00779
00780
00781
00782
00783
00784
00785 double C60bazmat::C60baz_nu()
00786 {
00787 return(vcoeff);
00788 }
00789
00790
00791
00792
00793
00794
00795 void C60bazmat::read(XFILE *in)
00796 {}
00797
00798
00799
00800
00801
00802
00803
00804 void C60bazmat::print(FILE *out)
00805 {}