Changeset 15770
- Timestamp:
- 08/09/13 10:44:43 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r15769 r15770 6990 6990 6991 6991 /*Constants*/ 6992 const int numnodes = 2 *NUMVERTICES;6993 6992 const int numdof = NUMVERTICES *NDOF4; 6994 6993 const int numdofm = NUMVERTICES *NDOF2; … … 7016 7015 Friction* friction=NULL; 7017 7016 GaussPenta *gauss=NULL; 7018 Node *node_list[numnodes];7019 int cs_list[numnodes];7020 7017 7021 7018 /*If on water or not FS, skip stiffness: */ 7022 7019 inputs->GetInputValue(&approximation,ApproximationEnum); 7023 7020 if(IsFloating() || !IsOnBed()) return NULL; 7021 7022 int vnumnodes = this->NumberofNodesVelocity(); 7023 int pnumnodes = this->NumberofNodesPressure(); 7024 int numnodes = 2*vnumnodes-1+pnumnodes; 7025 7026 Node *node_list[numnodes]; 7027 int cs_list[numnodes]; 7028 7024 7029 ElementMatrix* Ke1=new ElementMatrix(this->nodes,NUMVERTICES,this->parameters,SSAApproximationEnum); 7025 ElementMatrix* Ke2=new ElementMatrix(this->nodes, NUMVERTICES,this->parameters,FSvelocityEnum);7030 ElementMatrix* Ke2=new ElementMatrix(this->nodes,numnodes,this->parameters,FSvelocityEnum); 7026 7031 ElementMatrix* Ke=new ElementMatrix(Ke1,Ke2); 7027 7032 delete Ke1; delete Ke2; 7028 7033 7029 7034 /*Prepare node list*/ 7030 for(i=0;i< NUMVERTICES;i++){7035 for(i=0;i<numnodes+NUMVERTICES;i++){ 7031 7036 node_list[i+0*NUMVERTICES] = this->nodes[i]; 7032 7037 node_list[i+1*NUMVERTICES] = this->nodes[i]; … … 7097 7102 7098 7103 /*Clean up and return*/ 7104 xDelete<int>(cs_list); 7099 7105 delete gauss; 7100 7106 delete friction; … … 8352 8358 inputs->GetInputValue(&approximation,ApproximationEnum); 8353 8359 if(approximation!=HOFSApproximationEnum) return NULL; 8354 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters,FSvelocityEnum); 8360 8361 int vnumnodes = this->NumberofNodesVelocity(); 8362 int pnumnodes = this->NumberofNodesPressure(); 8363 int numnodes = vnumnodes+pnumnodes; 8364 8365 /*Prepare coordinate system list*/ 8366 int* cs_list = xNew<int>(vnumnodes+pnumnodes); 8367 for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum; 8368 for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum; 8369 8370 ElementVector* pe=new ElementVector(nodes,numnodes,this->parameters,FSvelocityEnum); 8355 8371 8356 8372 /*Retrieve all inputs and parameters*/ … … 8386 8402 8387 8403 for(i=0;i<NUMVERTICES2D;i++){ 8388 pe->values[i*NDOF 4+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i];8389 pe->values[i*NDOF 4+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i];8390 pe->values[i*NDOF 4+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i];8404 pe->values[i*NDOF3+0]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[0]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[0])*basis[i]; 8405 pe->values[i*NDOF3+1]+=Jdet2d*gauss->weight*(alpha2_gauss*w*bed_normal[1]*bed_normal[2]+2*viscosity*dw[2]*bed_normal[1])*basis[i]; 8406 pe->values[i*NDOF3+2]+=Jdet2d*gauss->weight*2*viscosity*(dw[0]*bed_normal[0]+dw[1]*bed_normal[1]+dw[2]*bed_normal[2])*basis[i]; 8391 8407 } 8392 8408 } 8393 8409 8394 8410 /*Transform coordinate system*/ 8395 TransformLoadVectorCoord(pe,nodes, NUMVERTICES,XYZEnum);8411 TransformLoadVectorCoord(pe,nodes,vnumnodes+pnumnodes,cs_list); 8396 8412 8397 8413 /*Clean up and return*/ 8414 xDelete<int>(cs_list); 8398 8415 delete gauss; 8399 8416 delete friction;
Note:
See TracChangeset
for help on using the changeset viewer.