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
00070
00071 #include <stdio.h>
00072 #include <stdlib.h>
00073 #include <math.h>
00074 #include "aliasc.h"
00075 #include "globalc.h"
00076 #include "constrelcu.h"
00077 #include "glasgowmatc.h"
00078
00079 state_eqcu::state_eqcu()
00080 {
00081 scale_pc = Tp->scale[0];
00082 scale_pg = Tp->scale[1];
00083 scale_t = Tp->scale[2];
00084 scale_u = 1.0;
00085 }
00086 state_eqcu::~state_eqcu()
00087 {}
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 double state_eqcu::get_s(double pc,double pg,double t,long ipp)
00099 {
00100 long i;
00101 double s;
00102
00103 i = Cmu->ip[ipp].idm;
00104
00105 switch (Cmu->ip[ipp].tm){
00106 case concreteBc:{
00107 s = Cmu->concretec[i].concreteB_sw(pc,t);
00108 break;
00109 }
00110 case baroghelBc:{
00111 s = Cmu->baroghelc[i].baroghel_sw(pc,t);
00112 break;
00113 }
00114 case C60baroghelBc:{
00115 s = Cmu->C60baroghelc[i].sat(pc,t);
00116 break;
00117 }
00118 case C30baroghelBc:{
00119 s = Cmu->C30baroghelc[i].sat(pc,t);
00120 break;
00121 }
00122 case o30bazantBc:{
00123 s = Cmu->o30bazantc[i].sat(pc,t);
00124 break;
00125 }
00126 case C60bazantBc:{
00127 s = Cmu->C60bazantc[i].sat(pc,t);
00128 break;
00129 }
00130
00131 default:{
00132 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00133 }
00134 }
00135
00136 return(s);
00137 }
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 double state_eqcu::get_alpha(double pc, double pg, double t,long ipp)
00149 {
00150 long i;
00151 double alpha;
00152
00153 i = Cmu->ip[ipp].idm;
00154
00155 switch (Cmu->ip[ipp].tm){
00156
00157
00158
00159
00160
00161 case baroghelBc:{
00162 alpha = Cmu->baroghelc[i].baroghel_alpha();
00163 break;
00164 }
00165 case C60baroghelBc:{
00166 alpha = Cmu->C60baroghelc[i].C60bar_alpha();
00167 break;
00168 }
00169 case C30baroghelBc:{
00170 alpha = Cmu->C30baroghelc[i].C30bar_alpha();
00171 break;
00172 }
00173 case o30bazantBc:{
00174 alpha = Cmu->o30bazantc[i].o30baz_alpha();
00175 break;
00176 }
00177 case C60bazantBc:{
00178 alpha = Cmu->C60bazantc[i].C60baz_alpha();
00179 break;
00180 }
00181 default:{
00182 alpha = 1.0;
00183
00184 }
00185 }
00186
00187 return(alpha);
00188 }
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201 double state_eqcu::get_rhos(double pc,double pg,double t,long ipp)
00202 {
00203 long i;
00204 double rhos;
00205
00206 i = Cmu->ip[ipp].idm;
00207
00208 switch (Cmu->ip[ipp].tm){
00209 case concreteBc:{
00210 rhos = Cmu->concretec[i].concreteB_rhos(t);
00211 break;
00212 }
00213 case baroghelBc:{
00214 rhos = Cmu->baroghelc[i].baroghel_rhos();
00215 break;
00216 }
00217 case C60baroghelBc:{
00218 rhos = Cmu->C60baroghelc[i].C60bar_rhos();
00219 break;
00220 }
00221 case C30baroghelBc:{
00222 rhos = Cmu->C30baroghelc[i].C30bar_rhos();
00223 break;
00224 }
00225 case o30bazantBc:{
00226 rhos = Cmu->o30bazantc[i].o30baz_rhos(t);
00227 break;
00228 }
00229 case C60bazantBc:{
00230 rhos = Cmu->C60bazantc[i].C60baz_rhos();
00231 break;
00232 }
00233 default:{
00234 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00235 }
00236 }
00237 return(rhos);
00238 }
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249 double state_eqcu::get_betas(double pc,double pg,double t,long ipp)
00250 {
00251 long i;
00252 double betas;
00253
00254 i = Cmu->ip[ipp].idm;
00255
00256 switch (Cmu->ip[ipp].tm){
00257 case concreteBc:{
00258 betas = Cmu->concretec[i].concreteB_betas();
00259 break;
00260 }
00261 case baroghelBc:{
00262 betas = Cmu->baroghelc[i].baroghel_betas();
00263 break;
00264 }
00265 case C60baroghelBc:{
00266 betas = Cmu->C60baroghelc[i].C60bar_betas();
00267 break;
00268 }
00269 case C30baroghelBc:{
00270 betas = Cmu->C30baroghelc[i].C30bar_betas();
00271 break;
00272 }
00273 case o30bazantBc:{
00274 betas = Cmu->o30bazantc[i].o30baz_betas();
00275 break;
00276 }
00277 case C60bazantBc:{
00278 betas = Cmu->C60bazantc[i].C60baz_betas();
00279 break;
00280 }
00281 default:{
00282 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00283 }
00284 }
00285
00286 return(betas);
00287 }
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301 void state_eqcu::matstiff (matrix &d,strastrestate mssst, long ipp)
00302 {
00303 double pc,pg,t;
00304
00305
00306 pc = 0.0;
00307 pg = 0.0;
00308 t = 0.0;
00309
00310 switch (mssst){
00311 case bar:{
00312 matstiff_bar (d,pc,pg,t,ipp);
00313 break;
00314 }
00315 case planestrain:{
00316 matstiff_plstress (d,pc,pg,t,ipp);
00317 break;
00318 }
00319 case planestress:{
00320 matstiff_plstress (d,pc,pg,t,ipp);
00321 break;
00322 }
00323 case spacestress:{
00324 matstiff_plstress (d,pc,pg,t,ipp);
00325 break;
00326 }
00327 default:{
00328 fprintf (stderr,"\n unknown number of components of stress tensor is required");
00329 fprintf (stderr,"\n in function elastisomat::matstiff (%s, line %d).\n",__FILE__,__LINE__);
00330 }
00331 }
00332 }
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348 void state_eqcu::matstiff_bar (matrix &d,double pc,double pg,double t,long ipp)
00349 {
00350 d[0][0] = give_e(pc,pg,t,ipp);
00351 }
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368 void state_eqcu::matstiff_plstress (matrix &d,double pc,double pg,double t,long ipp)
00369 {
00370 double c,e,nu;
00371
00372 fillm(0.0,d);
00373 e = give_e(pc,pg,t,ipp);
00374 nu = give_nu(pc,pg,t,ipp);
00375 c = e/(1.0-nu*nu);
00376
00377 d[0][0] = c; d[0][1] = c*nu; d[0][2] = 0.0;
00378 d[1][0] = c*nu; d[1][1] = c; d[1][2] = 0.0;
00379 d[2][0] = 0.0; d[2][1] = 0.0; d[2][2] = e/2.0/(1.0+nu);
00380 }
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396 void state_eqcu::matstiff_plstrain (matrix &d,double pc,double pg,double t,long ipp)
00397 {
00398 double c,e,nu;
00399
00400 fillm(0.0,d);
00401 e = give_e(pc,pg,t,ipp);
00402 nu = give_nu(pc,pg,t,ipp);
00403
00404 c = e/(1.0+nu)/(1.0-2.0*nu);
00405
00406 d[0][0] = c*(1.0-nu); d[0][1] = c*nu; d[0][2] = 0.0;
00407 d[1][0] = c*nu; d[1][1] = c*(1.0-nu); d[1][2] = 0.0;
00408 d[2][0] = 0.0; d[2][1] = 0.0; d[2][2] = e/2.0/(1.0+nu);
00409
00410 if (d.m > 3)
00411 {
00412 d[0][3] = d[0][1]; d[1][3] = d[1][0];
00413 d[3][0] = d[1][0]; d[3][1] = d[1][0]; d[3][3] = d[1][1];
00414 }
00415 }
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431 void state_eqcu::matstiff_spacestress (matrix &d,double pc,double pg,double t,long ipp)
00432 {
00433 double e,nu;
00434 double g,s;
00435
00436 fillm(0.0,d);
00437 e = give_e(pc,pg,t,ipp);
00438 nu = give_nu(pc,pg,t,ipp);
00439
00440 g = e/2.0/(1.0+nu);
00441 s = e/(1.0+nu)/(1.0-2.0*nu);
00442
00443 d[0][0]=s*(1-nu); d[0][1]=s*nu; d[0][2]=s*nu;
00444 d[1][0]=d[0][1]; d[1][1]=d[0][0]; d[1][2]=d[0][1];
00445 d[2][0]=d[0][1]; d[2][1]=d[0][1]; d[2][2]=d[0][0];
00446
00447 d[3][3]=g; d[4][4]=g; d[5][5]=g;
00448 }
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459 double state_eqcu::give_e(double pc,double pg, double t, long ipp)
00460 {
00461 long i;
00462 double emod;
00463
00464 i = Cmu->ip[ipp].idm;
00465
00466 switch (Cmu->ip[ipp].tm){
00467 case isotransmatc:{
00468 emod = Cmu->itrmc[i].get_e();
00469 break;
00470 }
00471 case concreteBc:{
00472 emod = Cmu->concretec[i].concreteB_emod();
00473 break;
00474 }
00475 case baroghelBc:{
00476 emod = Cmu->baroghelc[i].baroghel_emod();
00477 break;
00478 }
00479 case C60baroghelBc:{
00480 emod = Cmu->C60baroghelc[i].C60bar_emod(pc,pg,t);
00481 break;
00482 }
00483 case C30baroghelBc:{
00484 emod = Cmu->C30baroghelc[i].C30bar_emod(pc,pg,t);
00485 break;
00486 }
00487 case o30bazantBc:{
00488 emod = Cmu->o30bazantc[i].o30baz_emod();
00489 break;
00490 }
00491 case C60bazantBc:{
00492 emod = Cmu->C60bazantc[i].C60baz_emod(pc,pg,t);
00493 break;
00494 }
00495 case glasgowc:{
00496 emod = Cmu->tenchc[i].emod();
00497 break;
00498 }
00499 default:{
00500 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00501 }
00502 }
00503
00504 return(emod);
00505 }
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515 double state_eqcu::give_nu(double pc,double pg, double t, long ipp)
00516 {
00517 long i;
00518 double nu;
00519
00520 i = Cmu->ip[ipp].idm;
00521
00522 switch (Cmu->ip[ipp].tm){
00523 case isotransmatc:{
00524 nu = Cmu->itrmc[i].get_nu();
00525 break;
00526 }
00527 case concreteBc:{
00528 nu = Cmu->concretec[i].concreteB_nu();
00529 break;
00530 }
00531 case baroghelBc:{
00532 nu = Cmu->baroghelc[i].baroghel_nu();
00533 break;
00534 }
00535 case C60baroghelBc:{
00536 nu = Cmu->C60baroghelc[i].C60bar_nu();
00537 break;
00538 }
00539 case C30baroghelBc:{
00540 nu = Cmu->C30baroghelc[i].C30bar_nu();
00541 break;
00542 }
00543 case o30bazantBc:{
00544 nu = Cmu->o30bazantc[i].o30baz_nu();
00545 break;
00546 }
00547 case C60bazantBc:{
00548 nu = Cmu->C60bazantc[i].C60baz_nu();
00549 break;
00550 }
00551
00552
00553
00554
00555 default:{
00556 fprintf (stderr,"\n\n unknown material type is required in function (%s, line %d).\n",__FILE__,__LINE__);
00557 }
00558 }
00559
00560 return(nu);
00561 }