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