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 #ifndef MATPOINT3D_CPP
00027 #define MATPOINT3D_CPP
00028
00029 #include "MatPoint3D.h"
00030
00031
00032
00033 MatPoint3D::MatPoint3D(short int INr_direction_point_number,
00034 short int INs_direction_point_number,
00035 short int INt_direction_point_number,
00036 double r_coord,
00037 double s_coord,
00038 double t_coord,
00039 double r_weight,
00040 double s_weight,
00041 double t_weight,
00042 NDMaterial * p_INmatmodel
00043
00044
00045
00046
00047
00048 )
00049 {
00050 r_direction_point_number = INr_direction_point_number;
00051 s_direction_point_number = INs_direction_point_number;
00052 t_direction_point_number = INt_direction_point_number;
00053 r = r_coord;
00054 s = s_coord;
00055 t = t_coord;
00056 rw = r_weight;
00057 sw = s_weight;
00058 tw = t_weight;
00059
00060
00061
00062
00063
00064
00065
00066 if (p_INmatmodel)
00067 matmodel = p_INmatmodel->getCopy();
00068 else
00069 matmodel = 0;
00070
00071
00072
00073
00074
00075
00076
00077 }
00078
00080 MatPoint3D::~MatPoint3D()
00081 {
00082 if ( matmodel )
00083
00084 delete matmodel;
00085
00086
00087
00088
00089 }
00090
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113 void MatPoint3D::Initialize( short int INr_direction_point_number,
00114 short int INs_direction_point_number,
00115 short int INt_direction_point_number,
00116 double r_coord,
00117 double s_coord,
00118 double t_coord,
00119 double r_weight,
00120 double s_weight,
00121 double t_weight,
00122
00123
00124
00125
00126
00127
00128 NDMaterial * p_INmmodel
00129 )
00130 {
00131 this->r_direction_point_number = INr_direction_point_number;
00132 this->s_direction_point_number = INs_direction_point_number;
00133 this->t_direction_point_number = INt_direction_point_number;
00134
00135 this->r = r_coord;
00136 this->s = s_coord;
00137 this->t = t_coord;
00138 this->rw = r_weight;
00139 this->sw = s_weight;
00140 this->tw = t_weight;
00141
00142
00143
00144
00145
00146
00147 if ( p_INmmodel )
00148 this->matmodel = p_INmmodel;
00149 else
00150 this->matmodel = 0;
00151
00152
00153
00154
00155
00156
00157 }
00158
00159
00160
00161
00162 MatPoint3D * MatPoint3D::GP(void)
00163 {
00164 return this;
00165 }
00166
00167
00168 short int MatPoint3D::GP_number_r(void) const {
00169 return r_direction_point_number;
00170 }
00171
00172
00173
00174 short int MatPoint3D::GP_number_s(void) const {
00175 return s_direction_point_number;
00176 }
00177
00178
00179 short int MatPoint3D::GP_number_t(void) const {
00180 return t_direction_point_number;
00181 }
00182
00183
00184 double MatPoint3D::r_coordinate() const {
00185 return r;
00186 }
00187
00188
00189 double MatPoint3D::s_coordinate() const {
00190 return s;
00191 }
00192
00193
00194 double MatPoint3D::t_coordinate() const {
00195 return t;
00196 }
00197
00198
00199 double MatPoint3D::r_weight() const {
00200 return rw;
00201 }
00202
00203
00204 double MatPoint3D::s_weight() const {
00205 return sw;
00206 }
00207
00208
00209 double MatPoint3D::t_weight() const {
00210 return tw;
00211 }
00212
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00226
00227
00228
00229
00230
00231
00232
00233
00234 NDMaterial* MatPoint3D::getNDMat() const {
00235
00236 return matmodel;
00237 }
00238
00239
00240 double MatPoint3D::getrho() const
00241 {
00242 return matmodel->getRho();
00243 }
00244
00245 const char* MatPoint3D::getType (void) const
00246 {
00247 return matmodel->getType();
00248 }
00249
00250 int MatPoint3D::getTag (void) const
00251 {
00252 return matmodel->getTag();
00253 }
00254
00255
00256 const stresstensor MatPoint3D::getStressTensor() const {
00257
00258 return matmodel->getStressTensor();
00259 }
00260
00261
00262
00263 const straintensor MatPoint3D::getStrainTensor() const {
00264
00265 return matmodel->getStrainTensor();
00266 }
00267
00268
00269 const straintensor MatPoint3D::getPlasticStrainTensor() const {
00270
00271 return matmodel->getPlasticStrainTensor();
00272 }
00273
00275
00276
00277
00278
00279
00280
00281
00282 int MatPoint3D::commitState(void)
00283 {
00284 int err;
00285 err = matmodel->commitState();
00286 return err;
00287 }
00288
00289
00290 int MatPoint3D::revertToLastCommit(void)
00291 {
00292 int err;
00293 err = matmodel->revertToLastCommit();
00294 return err;
00295 }
00296
00297
00298 int MatPoint3D::revertToStart(void)
00299 {
00300 int err;
00301 err = matmodel->revertToStart();
00302 return err;
00303 }
00304
00305
00306 void MatPoint3D::report(char *msg) const
00307 {
00308
00309 if ( msg ) opserr << msg;
00310
00311 ::printf("\n\n\n---------------------------------------------------- \n");
00312 ::printf("Gauss point #r %d #s %d #t %d \n",
00313 GP_number_r(), GP_number_s(), GP_number_t());
00314
00315 ::printf("\tr->%.8e s->%.8e t->%.8e \n",
00316 r_coordinate(),s_coordinate(),t_coordinate());
00317
00318 ::printf("\tr_weight->%.8e s_weight->%.8e t_weight->%.8e \n",
00319 r_weight(),s_weight(),t_weight());
00320
00321
00322 if ( matmodel )
00323 {
00324 opserr << (*matmodel);
00325
00326 stresstensor tmpstress = matmodel->getStressTensor();
00327 tmpstress.report("stress at this Gauss-Legendre point\n");
00328
00329 straintensor tmpstrain = matmodel->getStrainTensor();
00330 tmpstrain.report("strain at this Gauss-Legendre point\n");
00331 }
00332 else
00333 opserr << "Empty Material Model\n";
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346 }
00347
00348
00349 void MatPoint3D::reportpqtheta(char *msg) const
00350 {
00351
00352
00353
00354 if ( msg ) opserr << msg;
00355
00356
00357
00358
00359
00360
00361 if ( matmodel ) {
00362 stresstensor tmp = matmodel->getStressTensor();
00363 tmp.reportshortpqtheta("");
00364 tmp.reportSHORTs1s2s3("");
00365 }
00366
00367 }
00368
00369
00370 void MatPoint3D::reportTensor(char *msg) const
00371 {
00372
00373
00374
00375 if ( msg ) opserr << msg;
00376
00377
00378
00379
00380 if ( matmodel ) {
00381 stresstensor tmp = matmodel->getStressTensor();
00382 tmp.reportTensor("");
00383 }
00384
00385 }
00386
00387
00388 #endif
00389
00390
00391
00392