Changeset 10375
- Timestamp:
- 10/31/11 11:48:12 (13 years ago)
- Location:
- issm/trunk/src/c/objects/Elements
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Penta.cpp
r10373 r10375 4806 4806 } 4807 4807 /*}}}*/ 4808 4809 4808 #endif 4810 4809 … … 7076 7075 int i; 7077 7076 double rho_ice,g; 7077 double values0[numdof]; 7078 7078 double values[numdof]; 7079 7079 double vx[NUMVERTICES]; … … 7091 7091 7092 7092 /*Use the dof list to index into the solution vector: */ 7093 for(i=0;i<numdof;i++) values[i]=solution[doflist[i]]; 7093 for(i=0;i<numdof;i++) values0[i]=solution[doflist[i]]; 7094 7095 /*Transform solution in Cartesian Space*/ 7096 TransformSolutionCoord(&values[0],&values0[0],2,true); 7094 7097 7095 7098 /*Ok, we have vx and vy in values, fill in vx and vy arrays and extrude */ … … 7709 7712 } 7710 7713 /*}}}*/ 7714 /*FUNCTION Penta::TransformStiffnessMatrixCoord{{{1*/ 7715 void Penta::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim){ 7716 7717 int i,j; 7718 int numnodes = NUMVERTICES; 7719 double *transform = NULL; 7720 double *values = NULL; 7721 7722 /*Copy current stiffness matrix*/ 7723 values=(double*)xmalloc(Ke->nrows*Ke->ncols*sizeof(double)); 7724 for(i=0;i<Ke->nrows;i++) for(j=0;j<Ke->ncols;j++) values[i*Ke->ncols+j]=Ke->values[i*Ke->ncols+j]; 7725 7726 /*Get Coordinate Systems transform matrix*/ 7727 CoordinateSystemTransform(&transform,nodes,numnodes,dim); 7728 7729 /*Transform matrix: T*Ke*T^t */ 7730 TripleMultiply(transform,numnodes*dim,numnodes*dim,1, 7731 values,Ke->nrows,Ke->ncols,0, 7732 transform,numnodes*dim,numnodes*dim,0, 7733 &Ke->values[0],0); 7734 7735 /*Free Matrix*/ 7736 xfree((void**)&transform); 7737 xfree((void**)&values); 7738 } 7739 /*}}}*/ 7740 /*FUNCTION Penta::TransformLoadVectorCoord{{{1*/ 7741 void Penta::TransformLoadVectorCoord(ElementVector* pe,int dim){ 7742 7743 int i,j; 7744 int numnodes = NUMVERTICES; 7745 double *transform = NULL; 7746 double *values = NULL; 7747 7748 /*Copy current load vector*/ 7749 values=(double*)xmalloc(pe->nrows*sizeof(double)); 7750 for(i=0;i<pe->nrows;i++) values[i]=pe->values[i]; 7751 7752 /*Get Coordinate Systems transform matrix*/ 7753 CoordinateSystemTransform(&transform,nodes,numnodes,dim); 7754 7755 /*Transform matrix: T^t*pe */ 7756 MatrixMultiply(transform,numnodes*dim,numnodes*dim,1, 7757 values,pe->nrows,1,0, 7758 &pe->values[0],0); 7759 7760 /*Free Matrix*/ 7761 xfree((void**)&transform); 7762 xfree((void**)&values); 7763 } 7764 /*}}}*/ 7765 /*FUNCTION Penta::TransformSolutionCoord{{{1*/ 7766 void Penta::TransformSolutionCoord(double* solution,double* solution0,int dim,bool is2d){ 7767 7768 int i,j; 7769 int numnodes; 7770 double *transform = NULL; 7771 7772 /*Get Coordinate Systems transform matrix*/ 7773 if(is2d) numnodes=NUMVERTICES; 7774 else numnodes=NUMVERTICES2D; 7775 CoordinateSystemTransform(&transform,nodes,numnodes,dim); 7776 7777 /*Transform matrix: T*U */ 7778 MatrixMultiply(transform,numnodes*dim,numnodes*dim,0, 7779 solution0,numnodes*dim,1,0, 7780 &solution[0],0); 7781 7782 /*Free Matrix*/ 7783 xfree((void**)&transform); 7784 } 7785 /*}}}*/ 7711 7786 #endif 7712 7787 -
issm/trunk/src/c/objects/Elements/Penta.h
r10373 r10375 235 235 void InputUpdateFromSolutionDiagnosticVert( double* solutiong); 236 236 void InputUpdateFromSolutionDiagnosticStokes( double* solutiong); 237 void GetSolutionFromInputsDiagnosticHoriz(Vec solutiong);238 void GetSolutionFromInputsDiagnosticHutter(Vec solutiong);239 void GetSolutionFromInputsDiagnosticStokes(Vec solutiong);240 void GetSolutionFromInputsDiagnosticVert(Vec solutiong);237 void GetSolutionFromInputsDiagnosticHoriz(Vec solutiong); 238 void GetSolutionFromInputsDiagnosticHutter(Vec solutiong); 239 void GetSolutionFromInputsDiagnosticStokes(Vec solutiong); 240 void GetSolutionFromInputsDiagnosticVert(Vec solutiong); 241 241 ElementVector* CreatePVectorCouplingMacAyealStokes(void); 242 242 ElementVector* CreatePVectorCouplingMacAyealStokesViscous(void); … … 258 258 ElementVector* CreatePVectorDiagnosticVertVolume(void); 259 259 ElementVector* CreatePVectorDiagnosticVertBase(void); 260 void TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim); 261 void TransformLoadVectorCoord(ElementVector* pe,int dim); 262 void TransformSolutionCoord(double* solution,double* solution0,int dim,bool is2d=false); 260 263 #endif 261 264 -
issm/trunk/src/c/objects/Elements/Tria.h
r10373 r10375 192 192 void SetClone(int* minranks); 193 193 void SurfaceNormal(double* surface_normal, double xyz_list[3][3]); 194 195 194 196 195 #ifdef _HAVE_DIAGNOSTIC_
Note:
See TracChangeset
for help on using the changeset viewer.