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
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 #include <stdio.h>
00070 #include <stdlib.h>
00071 #include <math.h>
00072 #include "aliast.h"
00073 #include "globalt.h"
00074 #include "constrel.h"
00075
00076 state_eq::state_eq()
00077 {
00078 mw = 18.01528;
00079 ma = 28.9645;
00080 gasr = 8314.41;
00081
00082 t0 = 273.15;
00083 p0 = 101325.0;
00084
00085
00086 muga0 = 17.17e-6;
00087 alphaa = 4.73e-8;
00088 betaa = 2.222e-11;
00089
00090
00091
00092
00093 dv0 = 2.58e-5;
00094 bv = 1.667;
00095 c8 = -5.8002206e+03;
00096 c9 = 1.3914993;
00097 c10 =-4.8640239e-02;
00098 c11 = 4.1764768e-05;
00099 c12 = -1.4452093e-08;
00100 c13 = 6.5459673;
00101 mugw0 = 8.85e-6;
00102 alphaw = 3.633e-8;
00103
00104
00105
00106
00107
00108
00109 rhow0 = 999.84;
00110 tcr = 647.3;
00111 cwat = 0.2e9;
00112 betawat = -0.414e-3;
00113 hvap0 = 2.7e+5;
00114
00115
00116
00117
00118 a0 = 4.8863e-7; a1 = -1.6528e-9; a2 = 1.8621e-12;
00119 a3 = 2.4266e-13; a4 = -1.5996e-15; a5 = 3.3703e-18;
00120 b0 = 1.0213e3; b1 = -7.7377e-1; b2 = 8.7696e-3;
00121
00122
00123
00124
00125 b3 = -9.2118e-5; b4 = 3.3534e-7; b5 = -4.4034e-10;
00126 pr1 = 1.0e7; prif = 2.0e7;
00127 muw0 = 0.6612;
00128 conb = 229.0;
00129 conc = -1.562;
00130 cpw = 4181.0;
00131 lambdaw = 0.6;
00132 kw0 = 0.43e10;
00133 }
00134 state_eq::~state_eq()
00135 {}
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145 double state_eq::get_pc(double pg,double pw)
00146 {
00147 double pc;
00148
00149 pc = pg - pw;
00150
00151 return(pc);
00152 }
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 double state_eq::get_s(double pc,double t,long ipp)
00163 {
00164 long i;
00165 double s;
00166
00167 i = Tm->ip[ipp].idm;
00168
00169 switch (Tm->ip[ipp].tm){
00170 case concreteB:{
00171 s = Tm->concrete[i].concreteB_sw(pc,t);
00172 break;
00173 }
00174 case baroghelB:{
00175 s = Tm->baroghel[i].baroghel_sw(pc,t);
00176 break;
00177 }
00178 case C60baroghelB:{
00179 s = Tm->C60baroghel[i].sat(pc,t);
00180 break;
00181 }
00182 case C30baroghelB:{
00183 s = Tm->C30baroghel[i].sat(pc,t);
00184 break;
00185 }
00186 case o30bazantB:{
00187 s = Tm->o30bazant[i].sat(pc,t);
00188 break;
00189 }
00190 case C60bazantB:{
00191 s = Tm->C60bazant[i].sat(pc,t);
00192 break;
00193 }
00194 case C30bazantB:{
00195 s = Tm->C30bazant[i].sat(pc,t);
00196 break;
00197 }
00198
00199 case soilmat1:{
00200 s = Tm->soil1[i].sat(pc,t);
00201 break;
00202 }
00203
00204
00205 default:{
00206 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00207 }
00208 }
00209
00210 return(s);
00211 }
00212
00213
00214
00215
00216
00217
00218
00219
00220 double state_eq::get_ds_dpc(double pc,double t,long ipp)
00221 {
00222 long i;
00223 double ds_dpc;
00224
00225 i = Tm->ip[ipp].idm;
00226
00227 switch (Tm->ip[ipp].tm){
00228 case concreteB:{
00229 ds_dpc = Tm->concrete[i].concreteB_dsw_dpc(pc,t);
00230 break;
00231 }
00232 case baroghelB:{
00233 ds_dpc = Tm->baroghel[i].baroghel_dsw_dpc(pc,t);
00234 break;
00235 }
00236 case C60baroghelB:{
00237 ds_dpc = Tm->C60baroghel[i].dsat_dpc(pc,t);
00238 break;
00239 }
00240 case C30baroghelB:{
00241 ds_dpc = Tm->C30baroghel[i].dsat_dpc(pc,t);
00242 break;
00243 }
00244 case o30bazantB:{
00245 ds_dpc = Tm->o30bazant[i].dsat_dpc(pc,t);
00246 break;
00247 }
00248 case C60bazantB:{
00249 ds_dpc = Tm->C60bazant[i].dsat_dpc(pc,t);
00250 break;
00251 }
00252 case C30bazantB:{
00253 ds_dpc = Tm->C30bazant[i].dsat_dpc(pc,t);
00254 break;
00255 }
00256
00257 case soilmat1:{
00258 ds_dpc = Tm->soil1[i].dsat_dpc(pc,t);
00259 break;
00260 }
00261
00262 default:{
00263 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00264 }
00265 }
00266
00267 return(ds_dpc);
00268 }
00269
00270
00271
00272
00273
00274
00275
00276
00277 double state_eq::get_ds_dt(double pc,double t,long ipp)
00278 {
00279 long i;
00280 double ds_dt;
00281
00282 i = Tm->ip[ipp].idm;
00283
00284 switch (Tm->ip[ipp].tm){
00285 case concreteB:{
00286 ds_dt = Tm->concrete[i].concreteB_dsw_dt(pc,t);
00287 break;
00288 }
00289 case baroghelB:{
00290 ds_dt = Tm->baroghel[i].baroghel_dsw_dt(pc,t);
00291 break;
00292 }
00293 case C60baroghelB:{
00294 ds_dt = Tm->C60baroghel[i].dsat_dt(pc,t);
00295 break;
00296 }
00297 case C30baroghelB:{
00298 ds_dt = Tm->C30baroghel[i].dsat_dt(pc,t);
00299 break;
00300 }
00301 case o30bazantB:{
00302 ds_dt = Tm->o30bazant[i].dsat_dt(pc,t);
00303 break;
00304 }
00305 case C60bazantB:{
00306 ds_dt = Tm->C60bazant[i].dsat_dt(pc,t);
00307 break;
00308 }
00309 case C30bazantB:{
00310 ds_dt = Tm->C30bazant[i].dsat_dt(pc,t);
00311 break;
00312 }
00313
00314 case soilmat1:{
00315 ds_dt = Tm->soil1[i].dsat_dt(pc,t);
00316 break;
00317 }
00318
00319 default:{
00320 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00321 }
00322 }
00323
00324 return(ds_dt);
00325 }
00326
00327
00328
00329
00330
00331
00332
00333 double state_eq::get_ssp(long ipp)
00334 {
00335 long i;
00336 double ssp;
00337
00338 i = Tm->ip[ipp].idm;
00339
00340 switch (Tm->ip[ipp].tm){
00341 case concreteB:{
00342 ssp = Tm->concrete[i].concreteB_ssp();
00343 break;
00344 }
00345 case baroghelB:{
00346 ssp = Tm->baroghel[i].baroghel_ssp();
00347 break;
00348 }
00349 case C60baroghelB:{
00350 ssp = Tm->C60baroghel[i].ssp();
00351 break;
00352 }
00353 case C30baroghelB:{
00354 ssp = Tm->C30baroghel[i].ssp();
00355 break;
00356 }
00357 case o30bazantB:{
00358 ssp = Tm->o30bazant[i].ssp();
00359 break;
00360 }
00361 case C60bazantB:{
00362 ssp = Tm->C60bazant[i].ssp();
00363 break;
00364 }
00365 case C30bazantB:{
00366 ssp = Tm->C30bazant[i].ssp();
00367 break;
00368 }
00369 default:{
00370 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00371 }
00372 }
00373
00374 return(ssp);
00375 }
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385 double state_eq::get_ddbw(double pc,double pg,double t,long ipp)
00386 {
00387 long i;
00388 double ddbw;
00389
00390 i = Tm->ip[ipp].idm;
00391
00392 switch (Tm->ip[ipp].tm){
00393
00394
00395
00396
00397
00398 case o30bazantB:{
00399 ddbw = Tm->o30bazant[i].sat(pc,t);
00400 break;
00401 }
00402 case C30baroghelB:{
00403 ddbw = Tm->C30baroghel[i].sat(pc,t);
00404 break;
00405 }
00406 case C60baroghelB:{
00407 ddbw = Tm->C60baroghel[i].sat(pc,t);
00408 break;
00409 }
00410 case baroghelB:{
00411 ddbw = Tm->baroghel[i].baroghel_ddbw(pc,pg,t);
00412 break;
00413 }
00414 case C60bazantB:{
00415 ddbw = Tm->C60bazant[i].C60baz_ddbw(pc,pg,t);
00416 break;
00417 }
00418 case C30bazantB:{
00419 ddbw = Tm->C30bazant[i].C30baz_ddbw(pc,pg,t);
00420 break;
00421 }
00422
00423 default:{
00424 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00425 }
00426 }
00427
00428 return(ddbw);
00429 }
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441 double state_eq::get_rh(double pc,double t)
00442 {
00443 double rhow,rh;
00444
00445
00446 if(t >= tcr)
00447 t = tcr;
00448
00449 rhow = get_rhow(t);
00450 rh = exp(-1.0*pc/rhow*mw/gasr/t);
00451
00452
00453
00454
00455
00456 if (rh <= 0.001){
00457 fprintf (Outt,"\n\n Uprava rel. hum < 0.0");
00458 rh = 0.001;
00459 }
00460 return(rh);
00461 }
00462
00463
00464
00465
00466
00467
00468
00469
00470 double state_eq::get_pcrh(double rh,double t)
00471 {
00472 double rhow,pc;
00473
00474
00475 if(t >= tcr)
00476 t = tcr;
00477
00478 rhow = get_rhow(t);
00479 pc = -rhow*gasr*t/mw*log(rh);
00480
00481
00482
00483
00484 if (pc < 100.0)
00485 pc = 1.0e-10;
00486
00487
00488 return(pc);
00489 }
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499 double state_eq::get_drh_dpc(double pc,double t)
00500 {
00501 double drh_dpc,rhow;
00502
00503
00504 if(t >= tcr)
00505 t = tcr;
00506
00507 rhow = get_rhow(t);
00508 drh_dpc = -1.0*mw/rhow/gasr/t*exp(-1.0*pc*mw/rhow/gasr/t);
00509
00510 return(drh_dpc);
00511 }
00512
00513
00514
00515
00516
00517
00518
00519
00520 double state_eq::get_drh_dt(double pc,double t)
00521 {
00522 double drh_dt,rhow,drhow_dt;
00523
00524
00525 if(t >= tcr)
00526 t = tcr;
00527
00528 rhow = get_rhow(t);
00529 drhow_dt = get_drhow_dt(pc,t);
00530 drh_dt = (pc/rhow*mw/gasr/t/t+pc/rhow*mw/gasr/t*drhow_dt/rhow)*exp(-1.0*pc/rhow*mw/gasr/t);
00531
00532 if(t >= tcr)
00533 drh_dt =0.0;
00534
00535 return(drh_dt);
00536 }
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547 double state_eq::get_w(double pc,double pg,double t,long ipp)
00548 {
00549 double w,por,s,rhow,rhog,rhos;
00550
00551 por = get_phi(t,ipp);
00552 s = get_s(pc,t,ipp);
00553 rhow = get_rhow(t);
00554 rhog = get_rhog(pc,pg,t);
00555 rhos = get_rhos(t,ipp);
00556
00557 w = (por*s*rhow + por*(1.0 - s)*rhog)/(1.0 - por)/rhos;
00558
00559 return(w);
00560 }
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572 double state_eq::get_pg(double pga,double pgw,double t)
00573 {
00574 double pg;
00575
00576 pg = pga + pgw;
00577
00578 return(pg);
00579 }
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589 double state_eq::get_rhog(double pc,double pg,double t)
00590 {
00591 double rhog,pgw;
00592
00593 pgw = get_pgw(pc,t);
00594
00595 rhog = (pg*ma + (mw - ma)*pgw)/gasr/t;
00596
00597 return(rhog);
00598 }
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608 double state_eq::get_drhog_dpc(double pc,double t)
00609 {
00610 double drhog_dpc,dpgw_dpc;
00611
00612 dpgw_dpc = get_dpgw_dpc(pc,t);
00613
00614 drhog_dpc = (mw - ma)*dpgw_dpc/(gasr*t);
00615
00616 return(drhog_dpc);
00617 }
00618
00619
00620
00621
00622
00623
00624
00625 double state_eq::get_drhog_dpg(double t)
00626 {
00627 double drhog_dpg;
00628
00629 drhog_dpg = ma/(gasr*t);
00630
00631 return(drhog_dpg);
00632 }
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643 double state_eq::get_drhog_dt(double pc,double pg,double t)
00644 {
00645 double drhog_dt,dpgw_dt,rhog;
00646
00647 rhog = get_rhog(pc,pg,t);
00648 dpgw_dt = get_dpgw_dt(pc,t);
00649
00650 drhog_dt = (mw - ma)*dpgw_dt/(gasr*t) - rhog/t;
00651
00652 return(drhog_dt);
00653 }
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663 double state_eq::get_mug(double pc,double pg,double t)
00664 {
00665 double mug,mugw,muga,pga,pgw;
00666
00667 pgw = get_pgw(pc,t);
00668
00669 pga = pg - pgw;
00670 muga = get_muga(t);
00671 mugw = get_mugw(t);
00672
00673
00674 if(pgw <= pg)
00675 mug = mugw + (muga - mugw)*pow((1.0 - pgw/pg),0.6083);
00676 else
00677 mug = mugw;
00678
00679 return(mug);
00680 }
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690 double state_eq::get_mg(double pc,double pg,double t)
00691 {
00692
00693
00694
00695
00696
00697
00698
00699
00700 double mg,pgw;
00701
00702 pgw = get_pgw(pc,t);
00703
00704 mg = ma + (mw-ma)*pgw/pg;
00705
00706 return(mg);
00707 }
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718 double state_eq::get_rhocpg(double pc,double pg,double t)
00719 {
00720 double rhocpg,rhog,rhogw,cpga,cpgw;
00721
00722 rhog = get_rhog(pc,pg,t);
00723 cpga = get_cpga();
00724 rhogw = get_rhogw(pc,t);
00725 cpgw = get_cpgw();
00726
00727 rhocpg = rhog*cpga + rhogw*(cpgw-cpga);
00728
00729 return(rhocpg);
00730 }
00731
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741 double state_eq::get_cpg(double pc,double pg,double t)
00742 {
00743 double cpg,rhog,rhogw,cpga,cpgw;
00744
00745 rhog = get_rhog(pc,pg,t);
00746 cpga = get_cpga();
00747 rhogw = get_rhogw(pc,t);
00748 cpgw = get_cpgw();
00749
00750 cpg = (rhog*cpga + rhogw*(cpgw-cpga))/rhog;
00751
00752 return(cpg);
00753 }
00754
00755
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765 double state_eq::get_pga(double pc,double pg,double t)
00766 {
00767 double rhoga,pga;
00768
00769 rhoga = get_rhoga(pc,pg,t);
00770
00771 pga = rhoga*t*gasr/ma;
00772
00773 return(pga);
00774 }
00775
00776
00777
00778
00779
00780
00781
00782
00783
00784 double state_eq::get_rhoga(double pc,double pg,double t)
00785 {
00786 double rhoga,pgw;
00787
00788
00789 pgw = get_pgw(pc,t);
00790
00791 if (pgw <= pg)
00792 rhoga = (pg - pgw)*ma/gasr/t;
00793 else
00794 rhoga = 0.0;
00795
00796
00797 return(rhoga);
00798 }
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808 double state_eq::get_drhoga_dpg(double pc,double pg,double t)
00809 {
00810 double drhoga_dpg,pgw;
00811
00812
00813 pgw = get_pgw(pc,t);
00814
00815 if(pgw <= pg)
00816 drhoga_dpg = ma/gasr/t;
00817 else
00818 drhoga_dpg = 0.0;
00819
00820 return(drhoga_dpg);
00821 }
00822
00823
00824
00825
00826
00827
00828
00829
00830
00831 double state_eq::get_drhoga_dpc(double pc,double pg,double t)
00832 {
00833 double drhoga_dpc,dpgw_dpc,pgw;
00834
00835
00836 pgw = get_pgw(pc,t);
00837
00838 if(pgw <= pg){
00839 dpgw_dpc = get_dpgw_dpc(pc,t);
00840 drhoga_dpc = -ma*dpgw_dpc/gasr/t;
00841 }
00842 else
00843 drhoga_dpc = 0.0;
00844
00845 return(drhoga_dpc);
00846 }
00847
00848
00849
00850
00851
00852
00853
00854
00855
00856 double state_eq::get_drhoga_dt(double pc,double pg,double t)
00857 {
00858 double drhoga_dt,dpgw_dt,rhoga,pgw;
00859
00860
00861 pgw =get_pgw(pc,t);
00862
00863 if(pgw <= pg){
00864 rhoga = get_rhoga(pc,pg,t);
00865 dpgw_dt = get_dpgw_dt(pc,t);
00866 drhoga_dt = -ma*dpgw_dt/gasr/t - rhoga/t;
00867 }
00868 else
00869 drhoga_dt = 0.0;
00870
00871 return(drhoga_dt);
00872 }
00873
00874
00875
00876
00877
00878
00879
00880 double state_eq::get_muga(double t)
00881 {
00882 double muga;
00883
00884 muga = muga0 + alphaa*(t-t0) - betaa*pow((t-t0),2.0);
00885
00886
00887
00888
00889
00890 return(muga);
00891 }
00892
00893
00894
00895
00896
00897
00898 double state_eq::get_cpga()
00899 {
00900 double cpga;
00901
00902 cpga = 1005.7;
00903
00904 return(cpga);
00905 }
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919
00920
00921
00922
00923 double state_eq::get_cdiff(double pc,double pg,double t)
00924 {
00925 double cdiff;
00926
00927
00928
00929 if (t < tcr)
00930 cdiff = dv0*p0/pg*exp(bv*log(t/t0));
00931 else
00932 cdiff = dv0*p0/pg*exp(bv*log(tcr/t0));
00933
00934 return(cdiff);
00935 }
00936
00937
00938
00939
00940
00941
00942
00943
00944 double state_eq::get_pgw(double pc,double t)
00945 {
00946 double pgw,rhow,pgws,tt;
00947
00948
00949 if(t >= tcr)
00950 tt = tcr;
00951 else
00952 tt = t;
00953
00954 pgws = get_pgws(tt);
00955 rhow = get_rhow(tt);
00956
00957 pgw = pgws*exp(-1.0*pc*mw/rhow/gasr/tt);
00958
00959 return(pgw);
00960 }
00961
00962
00963
00964
00965
00966
00967
00968
00969 double state_eq::get_pcpgw(double pgw,double t)
00970 {
00971 double pc,rhow,pgws,tt;
00972
00973
00974 if(t >= tcr)
00975 tt = tcr;
00976 else
00977 tt = t;
00978
00979 pgws = get_pgws(tt);
00980 rhow = get_rhow(tt);
00981
00982 pc = -rhow*gasr*tt/mw*log(pgw/pgws);
00983
00984
00985 if (pc < 100.0)
00986 pc = 1.0e-10;
00987
00988 return(pc);
00989 }
00990
00991
00992
00993
00994
00995
00996
00997
00998 double state_eq::get_dpgw_dpc(double pc,double t)
00999 {
01000 double dpgw_dpc,pgws,rhow,tt;
01001
01002
01003 if(t >= tcr)
01004 tt = tcr;
01005 else
01006 tt = t;
01007
01008 pgws = get_pgws(tt);
01009 rhow = get_rhow(tt);
01010
01011 dpgw_dpc = -pgws*exp(-pc*mw/rhow/gasr/tt)*mw/rhow/gasr/tt;
01012
01013 return(dpgw_dpc);
01014 }
01015
01016
01017
01018
01019
01020
01021
01022
01023 double state_eq::get_dpgw_dt(double pc,double t)
01024 {
01025 double dpgw_dt,dpgws_dt,tt,pgws,rhow;
01026
01027
01028 if(t >= tcr)
01029 tt = tcr;
01030 else
01031 tt = t;
01032
01033 pgws = get_pgws(tt);
01034 rhow = get_rhow(tt);
01035 dpgws_dt = get_dpgws_dt(tt);
01036
01037 if(t < tcr)
01038 dpgw_dt = dpgws_dt*exp(-pc*mw/rhow/gasr/tt) + pgws*exp(-pc*mw/rhow/gasr/tt)*(pc*mw/rhow/gasr/tt/tt);
01039 else
01040 dpgw_dt = dpgws_dt*exp(-pc*mw/rhow/gasr/tt);
01041
01042 return(dpgw_dt);
01043 }
01044
01045
01046
01047
01048
01049
01050
01051 double state_eq::get_pgws(double t)
01052 {
01053
01054
01055
01056
01057
01058
01059
01060
01061
01062
01063
01064
01065
01066
01067
01068
01069
01070
01071
01072
01073
01074 double t1,t2,t3,pgws,psl;
01075
01076 t1 = 1.0/t;
01077 t2 = t*t;
01078 t3 = t*t*t;
01079
01080
01081 if (t < tcr){
01082 psl = c8*t1 + c9 + c10*t + c11*t2 + c12*t3 + c13*log(t);
01083 pgws = exp(psl);
01084 }
01085 else
01086 pgws = 21780137.37214;
01087
01088 return(pgws);
01089 }
01090
01091
01092
01093
01094
01095
01096
01097 double state_eq::get_dpgws_dt(double t)
01098 {
01099 double t1,t12,t2,dpgws_dt,dpsl_dt,pgws;
01100
01101 t1 = 1.0/t;
01102 t2 = t*t;
01103 t12 = 1.0/t2;
01104
01105 pgws = get_pgws(t);
01106
01107
01108 if (t < tcr){
01109 dpsl_dt = -c8*t12 + c10 + c11*2.0*t + c12*3.0*t2 + c13*t1;
01110 dpgws_dt = pgws*dpsl_dt;
01111 }
01112 else
01113 dpgws_dt = 0.0;
01114
01115 return(dpgws_dt);
01116 }
01117
01118
01119
01120
01121
01122
01123
01124
01125 double state_eq::get_rhogw(double pc,double t)
01126 {
01127 double rhogw,pgw;
01128
01129 pgw = get_pgw(pc,t);
01130
01131 rhogw = pgw/t/gasr*mw;
01132
01133 return(rhogw);
01134 }
01135
01136
01137
01138
01139
01140
01141
01142
01143 double state_eq::get_pcrhogw(double rhogw,double t)
01144 {
01145 double pc,pgw;
01146
01147 pgw = rhogw*t*gasr/mw;
01148 pc = get_pcpgw(pgw,t);
01149
01150
01151 if (pc < 100.0)
01152 pc = 1.0e-10;
01153
01154 return(pc);
01155 }
01156
01157
01158
01159
01160
01161
01162
01163
01164 double state_eq::get_drhogw_dpc(double pc,double t)
01165 {
01166 double drhogw_dpc,dpgw_dpc;
01167
01168 dpgw_dpc = get_dpgw_dpc(pc,t);
01169
01170 drhogw_dpc = dpgw_dpc/t/gasr*mw;
01171
01172 return(drhogw_dpc);
01173 }
01174
01175
01176
01177
01178
01179
01180
01181
01182 double state_eq::get_drhogw_dt(double pc,double t)
01183 {
01184 double drhogw_dt,rhogw,dpgw_dt;
01185
01186 rhogw = get_rhogw(pc,t);
01187 dpgw_dt = get_dpgw_dt(pc,t);
01188
01189 drhogw_dt = dpgw_dt/t/gasr*mw - rhogw/t;
01190
01191 return(drhogw_dt);
01192 }
01193
01194
01195
01196
01197
01198
01199
01200 double state_eq::get_mugw(double t)
01201 {
01202 double mugw;
01203
01204 mugw = mugw0 + alphaw*(t-t0);
01205
01206
01207
01208
01209
01210 return(mugw);
01211 }
01212
01213
01214
01215
01216
01217
01218
01219 double state_eq::get_cpgw()
01220 {
01221 double cpgw;
01222
01223 cpgw = 1805.0;
01224
01225 return(cpgw);
01226 }
01227
01228
01229
01230
01231
01232
01233
01234
01235
01236
01237
01238
01239 double state_eq::get_pw(double pc,double pg,double t)
01240 {
01241 double pw;
01242
01243 pw = pg - pc;
01244
01245 return(pw);
01246 }
01247
01248
01249
01250
01251
01252
01253
01254
01255
01256 double state_eq::get_rhow(double t)
01257 {
01258 double rhow,tem;
01259
01260
01261
01262
01263
01264
01265
01266
01267
01268
01269
01270
01271
01272
01273 if (t < tcr){
01274
01275
01276
01277
01278
01279 tem = t - t0;
01280 rhow = (b0+(b1+(b2+(b3+(b4+b5*tem)*tem)*tem)*tem)*tem) + (pr1-prif)*
01281 (a0+(a1+(a2+(a3+(a4+a5*tem)*tem)*tem)*tem)*tem);
01282
01283
01284
01285
01286
01287
01288
01289
01290
01291
01292
01293 }
01294 else{
01295
01296
01297
01298 tem = tcr - t0;
01299 rhow = (b0+(b1+(b2+(b3+(b4+b5*tem)*tem)*tem)*tem)*tem) + (pr1-prif)*
01300 (a0+(a1+(a2+(a3+(a4+a5*tem)*tem)*tem)*tem)*tem);
01301
01302
01303
01304
01305
01306
01307
01308 }
01309
01310 return(rhow);
01311 }
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321 double state_eq::get_drhow_dt(double pc,double t)
01322 {
01323 double drhow_dt,tem;
01324
01325 if (t < tcr){
01326 tem = t - t0;
01327
01328 drhow_dt = (b1+(2*b2+(3*b3+(4*b4+5*b5*tem)*tem)*tem)*tem) + (pr1-prif)*(a1+(2*a2+(3*a3+(4*a4+5*a5*tem)*tem)*tem)*tem);
01329 }
01330 else{
01331 drhow_dt = 0.0;
01332 }
01333
01334 return(drhow_dt);
01335 }
01336
01337
01338
01339
01340
01341
01342
01343 double state_eq::get_dhvap(double t)
01344 {
01345 double dhvap,tem;
01346
01347 tem = tcr - t;
01348 if (t < tcr)
01349 dhvap = hvap0*pow(tem,0.38);
01350 else
01351 dhvap = 0.0;
01352
01353
01354
01355
01356
01357 return(dhvap);
01358 }
01359
01360
01361
01362
01363
01364
01365
01366 double state_eq::get_muw(double t)
01367 {
01368 double muw;
01369
01370 muw = muw0*pow((t - conb),conc);
01371
01372 return(muw);
01373 }
01374
01375
01376
01377
01378
01379
01380 double state_eq::get_cpw()
01381 {
01382 double c;
01383
01384 c = cpw;
01385
01386 return(c);
01387 }
01388
01389
01390
01391
01392
01393
01394
01395 double state_eq::get_lambdaw(double t)
01396 {
01397 double lam;
01398
01399 lam = lambdaw;
01400
01401 return(lam);
01402 }
01403
01404
01405
01406
01407
01408
01409
01410 double state_eq::get_betaw(double t)
01411 {
01412 double betaw;
01413
01414 betaw = 0.68e-4;
01415
01416
01417
01418 betaw = 0.63e-5;
01419
01420
01421 return(betaw);
01422 }
01423
01424
01425
01426
01427
01428
01429
01430
01431
01432 double state_eq::get_kw()
01433 {
01434 double kw;
01435
01436 kw = kw0;
01437
01438 return(kw);
01439 }
01440
01441
01442
01443
01444
01445
01446
01447
01448
01449
01450
01451
01452
01453
01454
01455 double state_eq::get_rho(double pc,double pg,double t,long ipp)
01456 {
01457 long i;
01458 double phi,rho,rhos,s,rhog;
01459
01460 i = Tm->ip[ipp].idm;
01461
01462 switch (Tm->ip[ipp].tm){
01463 case concreteB:{
01464 phi = Tm->concrete[i].concreteB_phi(t);
01465 rhos = Tm->concrete[i].concreteB_rhos(t);
01466 s = Tm->concrete[i].concreteB_sw(pc,t);
01467 break;
01468 }
01469 case baroghelB:{
01470 phi = Tm->baroghel[i].baroghel_phi();
01471 rhos = Tm->baroghel[i].baroghel_rhos();
01472 s = Tm->baroghel[i].baroghel_sw(pc,t);
01473 break;
01474 }
01475 case C60baroghelB:{
01476 phi = Tm->C60baroghel[i].C60bar_phi(t);
01477 rhos = Tm->C60baroghel[i].C60bar_rhos();
01478 s = Tm->C60baroghel[i].sat(pc,t);
01479 break;
01480 }
01481 case C30baroghelB:{
01482 phi = Tm->C60baroghel[i].C60bar_phi(t);
01483 rhos = Tm->C30baroghel[i].C30bar_rhos();
01484 s = Tm->C30baroghel[i].sat(pc,t);
01485 break;
01486 }
01487 case o30bazantB:{
01488 phi = Tm->o30bazant[i].o30baz_phi(t);
01489 rhos = Tm->o30bazant[i].o30baz_rhos(t);
01490 s = Tm->o30bazant[i].sat(pc,t);
01491 break;
01492 }
01493 case C60bazantB:{
01494 phi = Tm->C60bazant[i].C60baz_phi();
01495 rhos = Tm->C60bazant[i].C60baz_rhos();
01496 s = Tm->C60bazant[i].sat(pc,t);
01497 break;
01498 }
01499 case C30bazantB:{
01500 phi = Tm->C30bazant[i].C30baz_phi();
01501 rhos = Tm->C30bazant[i].C30baz_rhos();
01502 s = Tm->C30bazant[i].sat(pc,t);
01503 break;
01504 }
01505
01506 default:{
01507 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01508 }
01509 }
01510
01511 rhog = get_rhog(pc,pg,t);
01512
01513 rho = (1.0 - phi)*rhos + phi*s + phi*(1.0 - s)*rhog;
01514
01515 return(rho);
01516 }
01517
01518
01519
01520
01521
01522
01523
01524
01525
01526
01527 double state_eq::get_alpha(double pc, double pg, double t,long ipp)
01528 {
01529 long i;
01530 double alpha;
01531
01532 i = Tm->ip[ipp].idm;
01533
01534 switch (Tm->ip[ipp].tm){
01535
01536
01537
01538
01539
01540 case baroghelB:{
01541 alpha = Tm->baroghel[i].baroghel_alpha();
01542 break;
01543 }
01544 case C60baroghelB:{
01545 alpha = Tm->C60baroghel[i].C60bar_alpha();
01546 break;
01547 }
01548 case C30baroghelB:{
01549 alpha = Tm->C30baroghel[i].C30bar_alpha();
01550 break;
01551 }
01552 case o30bazantB:{
01553 alpha = Tm->o30bazant[i].o30baz_alpha();
01554 break;
01555 }
01556 case C60bazantB:{
01557 alpha = Tm->C60bazant[i].C60baz_alpha();
01558 break;
01559 }
01560 case C30bazantB:{
01561 alpha = Tm->C30bazant[i].C30baz_alpha();
01562 break;
01563 }
01564
01565 case soilmat1:{
01566 alpha = Tm->soil1[i]._alpha();
01567 break;
01568 }
01569
01570 default:{
01571
01572 double alpha,kt,ks;
01573
01574 kt = get_kt(pc,pg,t,ipp);
01575 ks = get_ks(pc,pg,t,ipp);
01576
01577 alpha = 1.0 - kt/ks;
01578
01579 if(alpha > 1.0)
01580 alpha = 1.0;
01581
01582 alpha = 1.0;
01583
01584 }
01585 }
01586
01587 return(alpha);
01588 }
01589
01590
01591
01592
01593
01594
01595
01596
01597
01598
01599
01600 double state_eq::get_rhos(double t,long ipp)
01601 {
01602 long i;
01603 double rhos;
01604
01605 i = Tm->ip[ipp].idm;
01606
01607 switch (Tm->ip[ipp].tm){
01608 case concreteB:{
01609 rhos = Tm->concrete[i].concreteB_rhos(t);
01610 break;
01611 }
01612 case baroghelB:{
01613 rhos = Tm->baroghel[i].baroghel_rhos();
01614 break;
01615 }
01616 case C60baroghelB:{
01617 rhos = Tm->C60baroghel[i].C60bar_rhos();
01618 break;
01619 }
01620 case C30baroghelB:{
01621 rhos = Tm->C30baroghel[i].C30bar_rhos();
01622 break;
01623 }
01624 case o30bazantB:{
01625 rhos = Tm->o30bazant[i].o30baz_rhos(t);
01626 break;
01627 }
01628 case C60bazantB:{
01629 rhos = Tm->C60bazant[i].C60baz_rhos();
01630 break;
01631 }
01632 case C30bazantB:{
01633 rhos = Tm->C30bazant[i].C30baz_rhos();
01634 break;
01635 }
01636
01637 case soilmat1:{
01638 rhos = Tm->soil1[i]._rhos();
01639 break;
01640 }
01641
01642 default:{
01643 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01644 }
01645 }
01646 return(rhos);
01647 }
01648
01649
01650
01651
01652
01653
01654
01655
01656
01657 double state_eq::get_kt(double pc,double pg,double t,long ipp)
01658 {
01659 long i;
01660 double kt;
01661 i = Tm->ip[ipp].idm;
01662
01663 switch (Tm->ip[ipp].tm){
01664 case concreteB:{
01665 kt = Tm->concrete[i].concreteB_kt(pc,pg,t);
01666 break;
01667 }
01668 default:{
01669 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01670 }
01671 }
01672
01673 return(kt);
01674 }
01675
01676
01677
01678
01679
01680
01681
01682
01683
01684 double state_eq::get_ks(double pc,double pg,double t,long ipp)
01685 {
01686 long i;
01687 double ks;
01688 i = Tm->ip[ipp].idm;
01689
01690 switch (Tm->ip[ipp].tm){
01691 case concreteB:{
01692 ks = Tm->concrete[i].concreteB_ks(pc,pg,t);
01693 break;
01694 }
01695
01696 case soilmat1:{
01697 ks = Tm->soil1[i]._ks();
01698 break;
01699 }
01700
01701 default:{
01702 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01703 }
01704 }
01705 return(ks);
01706 }
01707
01708
01709
01710
01711
01712
01713
01714
01715 double state_eq::get_krg(double pc,double t,long ipp)
01716 {
01717 long i;
01718 double krg,s;
01719
01720 i = Tm->ip[ipp].idm;
01721
01722 switch (Tm->ip[ipp].tm){
01723 case concreteB:{
01724 s = Tm->concrete[i].concreteB_sw(pc,t);
01725 krg = Tm->concrete[i].concreteB_krg(s);
01726 break;
01727 }
01728 case baroghelB:{
01729 s = Tm->baroghel[i].baroghel_sw(pc,t);
01730 krg = Tm->baroghel[i].baroghel_krg(s);
01731 break;
01732 }
01733 case C60baroghelB:{
01734 krg = Tm->C60baroghel[i].C60bar_krg(pc,t);
01735 break;
01736 }
01737 case C30baroghelB:{
01738 krg = Tm->C30baroghel[i].C30bar_krg(pc,t);
01739 break;
01740 }
01741 case o30bazantB:{
01742 krg = Tm->o30bazant[i].o30baz_krg(pc,t);
01743 break;
01744 }
01745 case C60bazantB:{
01746 krg = Tm->C60bazant[i].C60baz_krg(pc,t);
01747 break;
01748 }
01749 case C30bazantB:{
01750 krg = Tm->C30bazant[i].C30baz_krg(pc,t);
01751 break;
01752 }
01753
01754 case soilmat1:{
01755 krg = Tm->soil1[i]._krg(pc,t);
01756 break;
01757 }
01758
01759 default:{
01760 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01761 }
01762 }
01763
01764 return(krg);
01765 }
01766
01767
01768
01769
01770
01771
01772
01773
01774 double state_eq::get_krw(double pc,double t,long ipp)
01775 {
01776 long i;
01777 double krw,s,rh;
01778
01779 i = Tm->ip[ipp].idm;
01780
01781 switch (Tm->ip[ipp].tm){
01782 case concreteB:{
01783 s = Tm->concrete[i].concreteB_sw(pc,t);
01784 rh = get_rh(pc,t);
01785 krw = Tm->concrete[i].concreteB_krw(s,rh);
01786 break;
01787 }
01788 case baroghelB:{
01789 krw = Tm->baroghel[i].baroghel_krw(pc,t);
01790 break;
01791 }
01792 case C60baroghelB:{
01793 rh = get_rh(pc,t);
01794 krw = Tm->C60baroghel[i].C60bar_krw(pc,t,rh);
01795 break;
01796 }
01797 case C30baroghelB:{
01798 rh = get_rh(pc,t);
01799 krw = Tm->C30baroghel[i].C30bar_krw(pc,t,rh);
01800 break;
01801 }
01802 case o30bazantB:{
01803 rh = get_rh(pc,t);
01804 krw = Tm->o30bazant[i].o30baz_krw(pc,t,rh);
01805 break;
01806 }
01807 case C60bazantB:{
01808 krw = Tm->C60bazant[i].C60baz_krw(pc,t);
01809 break;
01810 }
01811 case C30bazantB:{
01812 krw = Tm->C30bazant[i].C30baz_krw(pc,t);
01813 break;
01814 }
01815
01816 case soilmat1:{
01817 krw = Tm->soil1[i]._krw(pc,t);
01818 break;
01819 }
01820
01821 default:{
01822 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01823 }
01824 }
01825
01826 return(krw);
01827 }
01828
01829
01830
01831
01832
01833
01834
01835 double state_eq::get_phi(double t,long ipp)
01836 {
01837 long i;
01838 double phi;
01839
01840 i = Tm->ip[ipp].idm;
01841
01842 switch (Tm->ip[ipp].tm){
01843 case concreteB:{
01844 phi = Tm->concrete[i].concreteB_phi(t);
01845 break;
01846 }
01847 case baroghelB:{
01848 phi = Tm->baroghel[i].baroghel_phi();
01849 break;
01850 }
01851 case C60baroghelB:{
01852 phi = Tm->C60baroghel[i].C60bar_phi(t);
01853 break;
01854 }
01855 case C30baroghelB:{
01856 phi = Tm->C30baroghel[i].C30bar_phi(t);
01857 break;
01858 }
01859 case o30bazantB:{
01860 phi = Tm->o30bazant[i].o30baz_phi(t);
01861 break;
01862 }
01863 case C60bazantB:{
01864 phi = Tm->C60bazant[i].C60baz_phi();
01865 break;
01866 }
01867 case C30bazantB:{
01868 phi = Tm->C30bazant[i].C30baz_phi();
01869 break;
01870 }
01871 case soilmat1:{
01872 phi = Tm->soil1[i]._phi();
01873 break;
01874 }
01875
01876 default:{
01877 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01878 }
01879 }
01880
01881 return(phi);
01882 }
01883
01884
01885
01886
01887
01888
01889
01890 double state_eq::get_dphi_dt(double pc, double pg,double t,long ipp)
01891 {
01892 long i;
01893 double dphi_dt,dehydw_dt,rhos;
01894
01895 i = Tm->ip[ipp].idm;
01896
01897 switch (Tm->ip[ipp].tm){
01898
01899
01900
01901
01902
01903 case o30bazantB:{
01904 dehydw_dt = Tm->o30bazant[i].o30baz_dehydw_dt(pc,pg,t);
01905 rhos = Tm->o30bazant[i].o30baz_rhos(t);
01906 break;
01907 }
01908 case C30baroghelB:{
01909 dehydw_dt = Tm->C30baroghel[i].C30bar_dehydw_dt(pc,pg,t);
01910 rhos = Tm->C30baroghel[i].C30bar_rhos();
01911 break;
01912 }
01913 case C60baroghelB:{
01914 dehydw_dt = Tm->C60baroghel[i].C60bar_dehydw_dt(pc,pg,t);
01915 rhos = Tm->C60baroghel[i].C60bar_rhos();
01916 break;
01917 }
01918 case baroghelB:{
01919 dehydw_dt = Tm->baroghel[i].baroghel_dehydw_dt(pc,pg,t);
01920 rhos = Tm->baroghel[i].baroghel_rhos();
01921 break;
01922 }
01923 case C60bazantB:{
01924 dehydw_dt = Tm->C60bazant[i].C60baz_dehydw_dt(pc,pg,t);
01925 rhos = Tm->C60bazant[i].C60baz_rhos();
01926 break;
01927 }
01928 case C30bazantB:{
01929 dehydw_dt = Tm->C30bazant[i].C30baz_dehydw_dt(pc,pg,t);
01930 rhos = Tm->C30bazant[i].C30baz_rhos();
01931 break;
01932 }
01933 default:{
01934 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01935 }
01936 }
01937
01938 dphi_dt = dehydw_dt/rhos;
01939
01940 return(dphi_dt);
01941 }
01942
01943
01944
01945
01946
01947
01948
01949
01950
01951 double state_eq::get_deff(double pc,double pg,double t,long ipp)
01952 {
01953 long i;
01954 double deff;
01955
01956 i = Tm->ip[ipp].idm;
01957
01958 switch (Tm->ip[ipp].tm){
01959 case concreteB:{
01960 deff = Tm->concrete[i].concreteB_deff(pc,pg,t);
01961 break;
01962 }
01963 case baroghelB:{
01964 deff = Tm->baroghel[i].baroghel_deff(pc,pg,t);
01965 break;
01966 }
01967 case C60baroghelB:{
01968 deff = Tm->C60baroghel[i].C60bar_deff(pc,pg,t);
01969 break;
01970 }
01971 case C30baroghelB:{
01972 deff = Tm->C30baroghel[i].C30bar_deff(pc,pg,t);
01973 break;
01974 }
01975 case o30bazantB:{
01976 deff = Tm->o30bazant[i].o30baz_deff(pc,pg,t);
01977 break;
01978 }
01979 case C60bazantB:{
01980 deff = Tm->C60bazant[i].C60baz_deff(pc,pg,t);
01981 break;
01982 }
01983 case C30bazantB:{
01984 deff = Tm->C30bazant[i].C30baz_deff(pc,pg,t);
01985 break;
01986 }
01987 default:{
01988 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
01989 }
01990 }
01991
01992 return(deff);
01993 }
01994
01995
01996
01997
01998
01999
02000
02001
02002
02003
02004 double state_eq::get_dg(double pc,double pg,double t,long ipp)
02005 {
02006 long i;
02007 double dg;
02008
02009 i = Tm->ip[ipp].idm;
02010
02011 switch (Tm->ip[ipp].tm){
02012 case soilmat1:{
02013 dg = Tm->soil1[i]._dg();
02014 break;
02015 }
02016 default:{
02017 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02018 }
02019 }
02020
02021 return(dg);
02022 }
02023
02024
02025
02026
02027
02028
02029 double state_eq::get_betas(long ipp)
02030 {
02031 long i;
02032 double betas;
02033
02034 i = Tm->ip[ipp].idm;
02035
02036 switch (Tm->ip[ipp].tm){
02037 case concreteB:{
02038 betas = Tm->concrete[i].concreteB_betas();
02039 break;
02040 }
02041 case baroghelB:{
02042 betas = Tm->baroghel[i].baroghel_betas();
02043 break;
02044 }
02045 case C60baroghelB:{
02046 betas = Tm->C60baroghel[i].C60bar_betas();
02047 break;
02048 }
02049 case C30baroghelB:{
02050 betas = Tm->C30baroghel[i].C30bar_betas();
02051 break;
02052 }
02053 case o30bazantB:{
02054 betas = Tm->o30bazant[i].o30baz_betas();
02055 break;
02056 }
02057 case C60bazantB:{
02058 betas = Tm->C60bazant[i].C60baz_betas();
02059 break;
02060 }
02061 case C30bazantB:{
02062 betas = Tm->C30bazant[i].C30baz_betas();
02063 break;
02064 }
02065
02066 case soilmat1:{
02067 betas = Tm->soil1[i]._betas();
02068 break;
02069 }
02070
02071 default:{
02072 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02073 }
02074 }
02075
02076 return(betas);
02077 }
02078
02079
02080
02081
02082
02083
02084
02085
02086
02087 double state_eq::get_kintr(double pc,double pg,double t,long ipp)
02088 {
02089 long i;
02090 double kintr,dam;
02091
02092 i = Tm->ip[ipp].idm;
02093
02094
02095 if (Tm->givestatusntq(scal_iso_damage))
02096 dam = Tm->givenontransq(scal_iso_damage, ipp);
02097 else
02098 dam = 0.0;
02099
02100 switch (Tm->ip[ipp].tm){
02101 case concreteB:{
02102 kintr = Tm->concrete[i].concreteB_kintr(pg,t,dam);
02103 break;
02104 }
02105 case baroghelB:{
02106 kintr = Tm->baroghel[i].baroghel_kintr();
02107 break;
02108 }
02109 case C60baroghelB:{
02110 kintr = Tm->C60baroghel[i].C60bar_kintr(pc,pg,t,dam);
02111 break;
02112 }
02113 case C30baroghelB:{
02114 kintr = Tm->C30baroghel[i].C30bar_kintr(pc,pg,t,dam);
02115 break;
02116 }
02117 case o30bazantB:{
02118 kintr = Tm->o30bazant[i].o30baz_kintr(pc,pg,t,dam);
02119 break;
02120 }
02121 case C60bazantB:{
02122 kintr = Tm->C60bazant[i].C60baz_kintr();
02123 break;
02124 }
02125 case C30bazantB:{
02126 kintr = Tm->C30bazant[i].C30baz_kintr();
02127 break;
02128 }
02129
02130 case soilmat1:{
02131 kintr = Tm->soil1[i]._kintr();
02132 break;
02133 }
02134
02135 default:{
02136 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02137 }
02138 }
02139
02140 return(kintr);
02141 }
02142
02143
02144
02145
02146
02147
02148
02149 double state_eq::get_cps(double t,long ipp)
02150 {
02151 long i;
02152 double cps;
02153
02154 i = Tm->ip[ipp].idm;
02155
02156 switch (Tm->ip[ipp].tm){
02157 case concreteB:{
02158 cps = Tm->concrete[i].concreteB_cps(t);
02159 break;
02160 }
02161 case baroghelB:{
02162 cps = Tm->baroghel[i].baroghel_cps();
02163 break;
02164 }
02165 case C60baroghelB:{
02166 cps = Tm->C60baroghel[i].C60bar_cps(t);
02167 break;
02168 }
02169 case C30baroghelB:{
02170 cps = Tm->C30baroghel[i].C30bar_cps(t);
02171 break;
02172 }
02173 case o30bazantB:{
02174 cps = Tm->o30bazant[i].o30baz_cps(t);
02175 break;
02176 }
02177 case C60bazantB:{
02178 cps = Tm->C60bazant[i].C60baz_cps();
02179 break;
02180 }
02181 case C30bazantB:{
02182 cps = Tm->C30bazant[i].C30baz_cps();
02183 break;
02184 }
02185
02186 default:{
02187 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02188 }
02189 }
02190
02191 return(cps);
02192 }
02193
02194
02195
02196
02197
02198
02199
02200
02201
02202 double state_eq::get_rhocp(double pc,double pg,double t,long ipp)
02203 {
02204 long i;
02205 double rhocp;
02206
02207 i = Tm->ip[ipp].idm;
02208
02209 switch (Tm->ip[ipp].tm){
02210 case concreteB:{
02211 rhocp = Tm->concrete[i].concreteB_rhocp(pc,pg,t,ipp);
02212 break;
02213 }
02214 case baroghelB:{
02215 rhocp = Tm->baroghel[i].baroghel_rhocp(pc,pg,t);
02216 break;
02217 }
02218 case C60baroghelB:{
02219 rhocp = Tm->C60baroghel[i].C60bar_rhocp(pc,pg,t);
02220 break;
02221 }
02222 case C30baroghelB:{
02223 rhocp = Tm->C30baroghel[i].C30bar_rhocp(pc,pg,t);
02224 break;
02225 }
02226 case o30bazantB:{
02227 rhocp = Tm->o30bazant[i].o30baz_rhocp(pc,pg,t,ipp);
02228 break;
02229 }
02230 case C60bazantB:{
02231 rhocp = Tm->C60bazant[i].C60baz_rhocp(pc,pg,t);
02232 break;
02233 }
02234 case C30bazantB:{
02235 rhocp = Tm->C30bazant[i].C30baz_rhocp(pc,pg,t);
02236 break;
02237 }
02238
02239 case soilmat1:{
02240 rhocp = Tm->soil1[i]._rhocp();
02241 break;
02242 }
02243
02244 default:{
02245 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02246 }
02247 }
02248
02249 return(rhocp);
02250 }
02251
02252
02253
02254
02255
02256
02257
02258
02259
02260
02261 double state_eq::get_cp(double pc,double pg,double t,long ipp)
02262 {
02263 long i;
02264 double cp;
02265
02266 i = Tm->ip[ipp].idm;
02267
02268 switch (Tm->ip[ipp].tm){
02269 case concreteB:{
02270 cp = Tm->concrete[i].concreteB_cp(pc,pg,t,ipp);
02271 break;
02272 }
02273 case baroghelB:{
02274 cp = Tm->baroghel[i].baroghel_cp(pc,pg,t,ipp);
02275 break;
02276 }
02277 default:{
02278 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02279 }
02280 }
02281
02282 return(cp);
02283 }
02284
02285
02286
02287
02288
02289
02290
02291
02292
02293 double state_eq::get_lambdaeff(double pc,double pg,double t,long ipp)
02294 {
02295 long i;
02296 double lambdaeff;
02297
02298 i = Tm->ip[ipp].idm;
02299
02300 switch (Tm->ip[ipp].tm){
02301 case concreteB:{
02302 lambdaeff = Tm->concrete[i].concreteB_lambdaeff(pc,pg,t);
02303 break;
02304 }
02305 case baroghelB:{
02306 lambdaeff = Tm->baroghel[i].baroghel_lambdaeff(pc,pg,t);
02307 break;
02308 }
02309 case C60baroghelB:{
02310 lambdaeff = Tm->C60baroghel[i].C60bar_lambdaeff(pc,pg,t);
02311 break;
02312 }
02313 case C30baroghelB:{
02314 lambdaeff = Tm->C30baroghel[i].C30bar_lambdaeff(pc,pg,t);
02315 break;
02316 }
02317 case o30bazantB:{
02318 lambdaeff = Tm->o30bazant[i].o30baz_lambdaeff(pc,pg,t);
02319 break;
02320 }
02321 case C60bazantB:{
02322 lambdaeff = Tm->C60bazant[i].C60baz_lambdaeff(pc,t);
02323 break;
02324 }
02325 case C30bazantB:{
02326 lambdaeff = Tm->C30bazant[i].C30baz_lambdaeff(pc,t);
02327 break;
02328 }
02329 case soilmat1:{
02330 lambdaeff = Tm->soil1[i]._lambdaa();
02331 break;
02332 }
02333 default:{
02334 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02335 }
02336 }
02337
02338 return(lambdaeff);
02339 }
02340
02341
02342
02343
02344
02345
02346
02347
02348
02349 double state_eq::get_betaswg(double pc,double pg,double t,long ipp)
02350 {
02351 double betaswg,betas,phi,s,rhogw,rhow,betaw;
02352
02353 betas = get_betas(ipp);
02354 phi = get_phi(t,ipp);
02355 s = get_s(pc,t,ipp);
02356 rhogw = get_rhogw(pc,t);
02357 rhow = get_rhow(t);
02358 betaw = get_betaw(t);
02359
02360 betaswg = betas*(1.0 - phi)*((1.0 - s)*rhogw + s*rhow) + phi*betaw*rhow*s;
02361
02362 return(betaswg);
02363 }
02364
02365
02366
02367
02368
02369
02370
02371
02372
02373
02374 double state_eq::get_betaswg_c(double pc,double pg,double t,long ipp)
02375 {
02376 double alpha,betaswg,betas,phi,sw,sg,rhogw,rhow,betaw;
02377
02378 alpha = get_alpha(pc,pg,t,ipp);
02379 betas = get_betas(ipp);
02380 phi = get_phi(t,ipp);
02381 sw = get_s(pc,t,ipp);
02382 sg = 1.0 -sw;
02383 rhogw = get_rhogw(pc,t);
02384 rhow = get_rhow(t);
02385 betaw = get_betaw(t);
02386
02387 betaswg = betas*(alpha - phi)*(sg*rhogw + sw*rhow) + phi*betaw*rhow*sw;
02388
02389 return(betaswg);
02390 }
02391
02392
02393
02394
02395
02396
02397
02398
02399
02400
02401 double state_eq::get_betasw(double pc,double pg,double t,long ipp)
02402 {
02403 double betasw,betas,phi,s,betaw;
02404
02405 betas = get_betas(ipp);
02406 phi = get_phi(t,ipp);
02407 s = get_s(pc,t,ipp);
02408 betaw = get_betaw(t);
02409
02410 betasw = s*((1.0 - phi)*betas + phi*betaw);
02411
02412 return(betasw);
02413 }
02414
02415
02416
02417
02418
02419
02420
02421
02422
02423
02424 double state_eq::get_betasw_c(double pc,double pg,double t,long ipp)
02425 {
02426 double betasw,betas,phi,sw,betaw,alpha,rhow;
02427
02428 alpha = get_alpha(pc,pg,t,ipp);
02429 betas = get_betas(ipp);
02430 phi = get_phi(t,ipp);
02431 sw = get_s(pc,t,ipp);
02432 betaw = get_betaw(t);
02433 rhow = get_rhow(t);
02434
02435 betasw = rhow*sw*((alpha - phi)*betas + phi*betaw);
02436
02437 return(betasw);
02438 }
02439
02440
02441
02442
02443
02444
02445
02446
02447
02448
02449 double state_eq::get_betasg_c(double pc,double pg,double t,long ipp)
02450 {
02451 double betasw,betas,phi,sg,alpha;
02452
02453 alpha = get_alpha(pc,pg,t,ipp);
02454 betas = get_betas(ipp);
02455 phi = get_phi(t,ipp);
02456 sg = 1.0 - get_s(pc,t,ipp);
02457
02458 betasw = sg*(alpha - phi)*betas;
02459
02460 return(betasw);
02461 }
02462
02463
02464
02465
02466
02467
02468
02469
02470
02471
02472
02473
02474
02475 double state_eq::get_dehydw_dt(double pc,double pg,double t,long ipp)
02476 {
02477 double dehydw_dt;
02478 long i;
02479
02480 i = Tm->ip[ipp].idm;
02481
02482 switch (Tm->ip[ipp].tm){
02483
02484
02485
02486
02487
02488 case o30bazantB:{
02489 dehydw_dt = Tm->o30bazant[i].o30baz_dehydw_dt(pc,pg,t);
02490 break;
02491 }
02492 case C30baroghelB:{
02493 dehydw_dt = Tm->C30baroghel[i].C30bar_dehydw_dt(pc,pg,t);
02494 break;
02495 }
02496 case C60baroghelB:{
02497 dehydw_dt = Tm->C60baroghel[i].C60bar_dehydw_dt(pc,pg,t);
02498 break;
02499 }
02500 case baroghelB:{
02501 dehydw_dt = Tm->baroghel[i].baroghel_dehydw_dt(pc,pg,t);
02502 break;
02503 }
02504 case C60bazantB:{
02505 dehydw_dt = Tm->C60bazant[i].C60baz_dehydw_dt(pc,pg,t);
02506 break;
02507 }
02508 case C30bazantB:{
02509 dehydw_dt = Tm->C30bazant[i].C30baz_dehydw_dt(pc,pg,t);
02510 break;
02511 }
02512 default:{
02513 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02514 }
02515 }
02516
02517 return(dehydw_dt);
02518 }
02519
02520
02521
02522
02523
02524
02525
02526
02527
02528
02529 double state_eq::get_hydren(double pc,double pg,double t,long ipp)
02530 {
02531 double hydren;
02532 long i;
02533
02534 i = Tm->ip[ipp].idm;
02535
02536 switch (Tm->ip[ipp].tm){
02537
02538
02539
02540
02541
02542 case o30bazantB:{
02543 hydren = Tm->o30bazant[i].o30baz_hydren(pc,pg,t);
02544 break;
02545 }
02546 case C30baroghelB:{
02547 hydren = Tm->C30baroghel[i].C30bar_hydren(pc,pg,t);
02548 break;
02549 }
02550 case C60baroghelB:{
02551 hydren = Tm->C60baroghel[i].C60bar_hydren(pc,pg,t);
02552 break;
02553 }
02554 case baroghelB:{
02555 hydren = Tm->baroghel[i].baroghel_hydren(pc,pg,t);
02556 break;
02557 }
02558 case C60bazantB:{
02559 hydren = Tm->C60bazant[i].C60baz_hydren(pc,pg,t);
02560 break;
02561 }
02562 case C30bazantB:{
02563 hydren = Tm->C30bazant[i].C30baz_hydren(pc,pg,t);
02564 break;
02565 }
02566 default:{
02567 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02568 }
02569 }
02570
02571 return(hydren);
02572 }
02573
02574
02575
02576
02577
02578
02579
02580
02581
02582
02583
02584 double state_eq::get_fste(double pc,double pg,double t,long ipp)
02585 {
02586 double fste;
02587 long i;
02588
02589 i = Tm->ip[ipp].idm;
02590
02591 switch (Tm->ip[ipp].tm){
02592
02593
02594
02595
02596
02597 case o30bazantB:{
02598 fste = Tm->o30bazant[i].o30baz_fste(pc,pg,t);
02599 break;
02600 }
02601 case C30baroghelB:{
02602 fste = Tm->C30baroghel[i].C30bar_fste(pc,pg,t);
02603 break;
02604 }
02605 case C60baroghelB:{
02606 fste = Tm->C60baroghel[i].C60bar_fste(pc,pg,t);
02607 break;
02608 }
02609 case baroghelB:{
02610 fste = Tm->baroghel[i].baroghel_fste(pc,pg,t);
02611 break;
02612 }
02613 case C60bazantB:{
02614 fste = Tm->C60bazant[i].C60baz_fste(pc,pg,t);
02615 break;
02616 }
02617 case C30bazantB:{
02618 fste = Tm->C30bazant[i].C30baz_fste(pc,pg,t);
02619 break;
02620 }
02621 default:{
02622 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
02623 }
02624 }
02625
02626 return(fste);
02627 }
02628