Changeset 5736
- Timestamp:
- 09/09/10 16:39:06 (15 years ago)
- Location:
- issm/trunk/src/c/objects
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Penta.cpp
r5731 r5736 4509 4509 /*}}}*/ 4510 4510 /*FUNCTION Penta::GetStrainRate3dPattyn{{{1*/ 4511 void Penta::GetStrainRate3dPattyn(double* epsilon,double* xyz_list, double* gauss, Input* vx_input, Input* vy_input){4512 /*Compute the 3d Blatter/PattynStrain Rate (5 components):4513 *4514 * epsilon=[exx eyy exy exz eyz]4515 *4516 * with exz=1/2 du/dz4517 * eyz=1/2 dv/dz4518 *4519 * the contribution of vz is neglected4520 */4521 4522 int i;4523 4524 double epsilonvx[5];4525 double epsilonvy[5];4526 4527 /*Check that both inputs have been found*/4528 if (!vx_input || !vy_input){4529 ISSMERROR("Input missing. Here are the input pointers we have for vx: %p, vy: %p\n",vx_input,vy_input);4530 }4531 4532 /*Get strain rate assuming that epsilon has been allocated*/4533 vx_input->GetVxStrainRate3dPattyn(epsilonvx,xyz_list,gauss);4534 vy_input->GetVyStrainRate3dPattyn(epsilonvy,xyz_list,gauss);4535 4536 /*Sum all contributions*/4537 for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i];4538 4539 }4540 /*}}}*/4541 /*FUNCTION Penta::GetStrainRate3dPattyn{{{1*/4542 4511 void Penta::GetStrainRate3dPattyn(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input){ 4543 4512 /*Compute the 3d Blatter/PattynStrain Rate (5 components): … … 4567 4536 /*Sum all contributions*/ 4568 4537 for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]; 4569 4570 }4571 /*}}}*/4572 /*FUNCTION Penta::GetStrainRate3d{{{1*/4573 void Penta::GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, Input* vx_input, Input* vy_input, Input* vz_input){4574 /*Compute the 3d Strain Rate (6 components):4575 *4576 * epsilon=[exx eyy ezz exy exz eyz]4577 */4578 4579 int i;4580 4581 double epsilonvx[6];4582 double epsilonvy[6];4583 double epsilonvz[6];4584 4585 /*Check that both inputs have been found*/4586 if (!vx_input || !vy_input || !vz_input){4587 ISSMERROR("Input missing. Here are the input pointers we have for vx: %p, vy: %p, vz: %p\n",vx_input,vy_input,vz_input);4588 }4589 4590 /*Get strain rate assuming that epsilon has been allocated*/4591 vx_input->GetVxStrainRate3d(epsilonvx,xyz_list,gauss);4592 vy_input->GetVyStrainRate3d(epsilonvy,xyz_list,gauss);4593 vz_input->GetVzStrainRate3d(epsilonvz,xyz_list,gauss);4594 4595 /*Sum all contributions*/4596 for(i=0;i<6;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]+epsilonvz[i];4597 4538 4598 4539 } -
issm/trunk/src/c/objects/Elements/Penta.h
r5729 r5736 158 158 void GetParameterListOnVertices(double* pvalue,int enumtype); 159 159 void GetParameterListOnVertices(double* pvalue,int enumtype,double defaultvalue); 160 void 160 void GetParameterValue(double* pvalue,Node* node,int enumtype); 161 161 void GetPhi(double* phi, double* epsilon, double viscosity); 162 162 void GetSolutionFromInputsDiagnosticHoriz(Vec solutiong); … … 165 165 void GetSolutionFromInputsDiagnosticVert(Vec solutiong); 166 166 void GetSolutionFromInputsThermal(Vec solutiong); 167 void GetStrainRate3dPattyn(double* epsilon,double* xyz_list, double* gauss, Input* vx_input, Input* vy_input);168 167 void GetStrainRate3dPattyn(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input); 169 void GetStrainRate3d(double* epsilon,double* xyz_list, double* gauss, Input* vx_input, Input* vy_input, Input* vz_input);170 168 void GetStrainRate3d(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input, Input* vz_input); 171 169 Penta* GetUpperElement(void); -
issm/trunk/src/c/objects/Inputs/BoolInput.h
r5660 r5736 54 54 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussPenta* gauss); 55 55 void GetParameterAverage(double* pvalue){ISSMERROR("not implemented yet");}; 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};58 void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};59 void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};60 void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};61 void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};62 void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};63 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; 64 57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/DoubleInput.h
r5660 r5736 53 53 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussPenta* gauss); 54 54 void GetParameterAverage(double* pvalue); 55 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};56 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};57 void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};58 void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};59 void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};60 void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};61 void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};62 55 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; 63 56 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/Input.h
r5660 r5736 32 32 virtual void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussPenta* gauss)=0; 33 33 virtual void GetParameterAverage(double* pvalue)=0; 34 virtual void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss)=0;35 virtual void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss)=0;36 virtual void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss)=0;37 virtual void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss)=0;38 virtual void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss)=0;39 virtual void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss)=0;40 virtual void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss)=0;41 34 virtual void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, GaussTria* gauss)=0; 42 35 virtual void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, GaussTria* gauss)=0; -
issm/trunk/src/c/objects/Inputs/IntInput.h
r5660 r5736 54 54 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussPenta* gauss); 55 55 void GetParameterAverage(double* pvalue){ISSMERROR("not implemented yet");}; 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};58 void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};59 void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};60 void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};61 void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};62 void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};63 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; 64 57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp
r5660 r5736 207 207 /*}}}*/ 208 208 /*FUNCTION PentaVertexInput::GetVxStrainRate3d{{{1*/ 209 void PentaVertexInput::GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){210 int i,j;211 212 const int numgrids=6;213 const int DOFVELOCITY=3;214 double B[8][27];215 double B_reduced[6][DOFVELOCITY*numgrids];216 double velocity[numgrids][DOFVELOCITY];217 218 /*Get B matrix: */219 GetBStokes(&B[0][0], xyz_list, gauss);220 /*Create a reduced matrix of B to get rid of pressure */221 for (i=0;i<6;i++){222 for (j=0;j<3;j++){223 B_reduced[i][j]=B[i][j];224 }225 for (j=4;j<7;j++){226 B_reduced[i][j-1]=B[i][j];227 }228 for (j=8;j<11;j++){229 B_reduced[i][j-2]=B[i][j];230 }231 for (j=12;j<15;j++){232 B_reduced[i][j-3]=B[i][j];233 }234 for (j=16;j<19;j++){235 B_reduced[i][j-4]=B[i][j];236 }237 for (j=20;j<23;j++){238 B_reduced[i][j-5]=B[i][j];239 }240 }241 242 /*Here, we are computing the strain rate of (vx,0,0)*/243 for(i=0;i<numgrids;i++){244 velocity[i][0]=this->values[i];245 velocity[i][1]=0.0;246 velocity[i][2]=0.0;247 }248 /*Multiply B by velocity, to get strain rate: */249 MatrixMultiply(&B_reduced[0][0],6,DOFVELOCITY*numgrids,0,&velocity[0][0],DOFVELOCITY*numgrids,1,0,epsilonvx,0);250 251 }252 /*}}}*/253 /*FUNCTION PentaVertexInput::GetVyStrainRate3d{{{1*/254 void PentaVertexInput::GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){255 int i,j;256 257 const int numgrids=6;258 const int DOFVELOCITY=3;259 double B[8][27];260 double B_reduced[6][DOFVELOCITY*numgrids];261 double velocity[numgrids][DOFVELOCITY];262 263 /*Get B matrix: */264 GetBStokes(&B[0][0], xyz_list, gauss);265 /*Create a reduced matrix of B to get rid of pressure */266 for (i=0;i<6;i++){267 for (j=0;j<3;j++){268 B_reduced[i][j]=B[i][j];269 }270 for (j=4;j<7;j++){271 B_reduced[i][j-1]=B[i][j];272 }273 for (j=8;j<11;j++){274 B_reduced[i][j-2]=B[i][j];275 }276 for (j=12;j<15;j++){277 B_reduced[i][j-3]=B[i][j];278 }279 for (j=16;j<19;j++){280 B_reduced[i][j-4]=B[i][j];281 }282 for (j=20;j<23;j++){283 B_reduced[i][j-5]=B[i][j];284 }285 }286 287 /*Here, we are computing the strain rate of (0,vy,0)*/288 for(i=0;i<numgrids;i++){289 velocity[i][0]=0.0;290 velocity[i][1]=this->values[i];291 velocity[i][2]=0.0;292 }293 /*Multiply B by velocity, to get strain rate: */294 MatrixMultiply(&B_reduced[0][0],6,DOFVELOCITY*numgrids,0,&velocity[0][0],DOFVELOCITY*numgrids,1,0,epsilonvy,0);295 296 }297 /*}}}*/298 /*FUNCTION PentaVertexInput::GetVzStrainRate3d{{{1*/299 void PentaVertexInput::GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){300 int i,j;301 302 const int numgrids=6;303 const int DOFVELOCITY=3;304 double B[8][27];305 double B_reduced[6][DOFVELOCITY*numgrids];306 double velocity[numgrids][DOFVELOCITY];307 308 /*Get B matrix: */309 GetBStokes(&B[0][0], xyz_list, gauss);310 /*Create a reduced matrix of B to get rid of pressure */311 for (i=0;i<6;i++){312 for (j=0;j<3;j++){313 B_reduced[i][j]=B[i][j];314 }315 for (j=4;j<7;j++){316 B_reduced[i][j-1]=B[i][j];317 }318 for (j=8;j<11;j++){319 B_reduced[i][j-2]=B[i][j];320 }321 for (j=12;j<15;j++){322 B_reduced[i][j-3]=B[i][j];323 }324 for (j=16;j<19;j++){325 B_reduced[i][j-4]=B[i][j];326 }327 for (j=20;j<23;j++){328 B_reduced[i][j-5]=B[i][j];329 }330 }331 332 /*Here, we are computing the strain rate of (0,0,vz)*/333 for(i=0;i<numgrids;i++){334 velocity[i][0]=0.0;335 velocity[i][1]=0.0;336 velocity[i][2]=this->values[i];337 }338 339 /*Multiply B by velocity, to get strain rate: */340 MatrixMultiply(&B_reduced[0][0],6,DOFVELOCITY*numgrids,0,&velocity[0][0],DOFVELOCITY*numgrids,1,0,epsilonvz,0);341 342 }343 /*}}}*/344 /*FUNCTION PentaVertexInput::GetVxStrainRate3dPattyn{{{1*/345 void PentaVertexInput::GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){346 347 int i;348 const int numgrids=6;349 const int NDOF2=2;350 double B[5][NDOF2*numgrids];351 double velocity[numgrids][NDOF2];352 353 /*Get B matrix: */354 GetBPattyn(&B[0][0], xyz_list, gauss);355 356 /*Here, we are computing the strain rate of (vx,0)*/357 for(i=0;i<numgrids;i++){358 velocity[i][0]=this->values[i];359 velocity[i][1]=0.0;360 }361 362 /*Multiply B by velocity, to get strain rate: */363 MatrixMultiply( &B[0][0],5,NDOF2*numgrids,0,364 &velocity[0][0],NDOF2*numgrids,1,0,365 epsilonvx,0);366 367 }368 /*}}}*/369 /*FUNCTION PentaVertexInput::GetVyStrainRate3dPattyn{{{1*/370 void PentaVertexInput::GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){371 372 int i;373 const int numgrids=6;374 const int NDOF2=2;375 double B[5][NDOF2*numgrids];376 double velocity[numgrids][NDOF2];377 378 /*Get B matrix: */379 GetBPattyn(&B[0][0], xyz_list, gauss);380 381 /*Here, we are computing the strain rate of (0,vy)*/382 for(i=0;i<numgrids;i++){383 velocity[i][0]=0.0;384 velocity[i][1]=this->values[i];385 }386 387 /*Multiply B by velocity, to get strain rate: */388 MatrixMultiply( &B[0][0],5,NDOF2*numgrids,0,389 &velocity[0][0],NDOF2*numgrids,1,0,390 epsilonvy,0);391 392 }393 /*}}}*/394 /*FUNCTION PentaVertexInput::GetVxStrainRate3d{{{1*/395 209 void PentaVertexInput::GetVxStrainRate3d(double* epsilonvx,double* xyz_list, GaussPenta* gauss){ 396 210 int i,j; -
issm/trunk/src/c/objects/Inputs/PentaVertexInput.h
r5660 r5736 54 54 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussPenta* gauss); 55 55 void GetParameterAverage(double* pvalue); 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};58 void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss);59 void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss);60 void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss);61 void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss);62 void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss);63 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; 64 57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, GaussTria* gauss){ISSMERROR("not implemented yet");}; -
issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
r5660 r5736 196 196 /*}}}*/ 197 197 /*FUNCTION TriaVertexInput::GetVxStrainRate2d{{{1*/ 198 void TriaVertexInput::GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss){199 200 /*Intermediary*/201 int i;202 const int numgrids=3;203 const int NDOF2=2;204 double B[3][NDOF2*numgrids];205 double velocity[3][NDOF2];206 207 /*Get B matrix: */208 GetBMacAyeal(&B[0][0], xyz_list, gauss);209 210 /*Here, we are computing the strain rate of (vx,0)*/211 for(i=0;i<3;i++){212 velocity[i][0]=this->values[i];213 velocity[i][1]=0.0;214 }215 /*Get epsilon(vx) = B*velocity*/216 MatrixMultiply( &B[0][0],3,NDOF2*numgrids,0,217 &velocity[0][0],NDOF2*numgrids,1,0,218 epsilonvx,0);219 }220 /*}}}*/221 /*FUNCTION TriaVertexInput::GetVyStrainRate2d{{{1*/222 void TriaVertexInput::GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss){223 224 /*Intermediary*/225 int i;226 const int numgrids=3;227 const int NDOF2=2;228 double B[3][NDOF2*numgrids];229 double velocity[3][NDOF2];230 231 /*Get B matrix: */232 GetBMacAyeal(&B[0][0], xyz_list, gauss);233 234 /*Here, we are computing the strain rate of (0,vy)*/235 for(i=0;i<3;i++){236 velocity[i][0]=0.0;237 velocity[i][1]=this->values[i];238 }239 /*Get epsilon(vy) = B*velocity*/240 MatrixMultiply( &B[0][0],3,NDOF2*numgrids,0,241 &velocity[0][0],NDOF2*numgrids,1,0,242 epsilonvy,0);243 }244 /*}}}*/245 /*FUNCTION TriaVertexInput::GetVxStrainRate2d{{{1*/246 198 void TriaVertexInput::GetVxStrainRate2d(double* epsilonvx,double* xyz_list, GaussTria* gauss){ 247 199 -
issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
r5660 r5736 54 54 void GetParameterDerivativeValue(double* derivativevalues, double* xyz_list, GaussPenta* gauss){ISSMERROR("not implemented yet");}; 55 55 void GetParameterAverage(double* pvalue); 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, double* gauss);57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, double* gauss);58 void GetVxStrainRate3d(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};59 void GetVyStrainRate3d(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};60 void GetVzStrainRate3d(double* epsilonvz,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};61 void GetVxStrainRate3dPattyn(double* epsilonvx,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};62 void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss){ISSMERROR("not implemented yet");};63 56 void GetVxStrainRate2d(double* epsilonvx,double* xyz_list, GaussTria* gauss); 64 57 void GetVyStrainRate2d(double* epsilonvy,double* xyz_list, GaussTria* gauss);
Note:
See TracChangeset
for help on using the changeset viewer.