Changeset 10407
- Timestamp:
- 11/01/11 11:40:58 (13 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 3 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r10370 r10407 18 18 #}}} 19 19 20 # Oursources20 #sources 21 21 #Core sources{{{1 22 22 core_sources = ./include/macros.h\ … … 482 482 ./modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp \ 483 483 ./modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp \ 484 ./modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp 484 ./modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp \ 485 ./shared/Elements/TransformLoadVectorCoord.cpp \ 486 ./shared/Elements/TransformStiffnessMatrixCoord.cpp \ 487 ./shared/Elements/TransformSolutionCoord.cpp 485 488 diagnostic_psources =./solutions/diagnostic_core.cpp\ 486 489 ./solvers/solver_stokescoupling_nonlinear.cpp -
issm/trunk/src/c/objects/Elements/Penta.cpp
r10400 r10407 5651 5651 5652 5652 /*Transform Coordinate System*/ 5653 tria->TransformStiffnessMatrixCoord(Ke,2);5653 TransformStiffnessMatrixCoord(Ke,tria->nodes,NUMVERTICES2D,NDOF2); 5654 5654 5655 5655 /*Clean up and return*/ … … 5783 5783 5784 5784 /*Transform Coordinate System*/ 5785 TransformStiffnessMatrixCoord(Ke, 2);5785 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,NDOF2); 5786 5786 5787 5787 /*Clean up and return*/ … … 5857 5857 5858 5858 /*Transform Coordinate System*/ 5859 TransformStiffnessMatrixCoord(Ke, 2);5859 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,NDOF2); 5860 5860 5861 5861 /*Clean up and return*/ … … 5952 5952 5953 5953 /*Transform Coordinate System*/ 5954 TransformStiffnessMatrixCoord(Ke, 4);5954 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,NDOF4); 5955 5955 5956 5956 /*Clean up and return*/ … … 6040 6040 6041 6041 /*Transform Coordinate System*/ 6042 TransformStiffnessMatrixCoord(Ke, 4);6042 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,NDOF4); 6043 6043 6044 6044 /*Clean up and return*/ … … 6661 6661 6662 6662 /*Transform coordinate system*/ 6663 TransformLoadVectorCoord(pe, 2);6663 TransformLoadVectorCoord(pe,nodes,NUMVERTICES,NDOF2); 6664 6664 6665 6665 /*Clean up and return*/ … … 6757 6757 6758 6758 /*Transform coordinate system*/ 6759 TransformLoadVectorCoord(pe, 4);6759 TransformLoadVectorCoord(pe,nodes,NUMVERTICES,NDOF4); 6760 6760 6761 6761 /*Clean up and return*/ … … 6825 6825 6826 6826 /*Transform coordinate system*/ 6827 TransformLoadVectorCoord(pe, 4);6827 TransformLoadVectorCoord(pe,nodes,NUMVERTICES,NDOF4); 6828 6828 6829 6829 /*Clean up and return*/ … … 7185 7185 7186 7186 /*Transform solution in Cartesian Space*/ 7187 TransformSolutionCoord(&values[0], &values0[0],2,true);7187 TransformSolutionCoord(&values[0],nodes,NUMVERTICES2D,NDOF2); /*2D: only the first 3 nodes are taken*/ 7188 7188 7189 7189 /*Ok, we have vx and vy in values, fill in vx and vy arrays and extrude */ … … 7425 7425 double rho_ice,g; 7426 7426 double values[numdof]; 7427 double values0[numdof];7428 7427 double vx[NUMVERTICES]; 7429 7428 double vy[NUMVERTICES]; … … 7442 7441 7443 7442 /*Use the dof list to index into the solution vector: */ 7444 for(i=0;i<numdof;i++) values 0[i]=solution[doflist[i]];7443 for(i=0;i<numdof;i++) values[i]=solution[doflist[i]]; 7445 7444 7446 7445 /*Transform solution in Cartesian Space*/ 7447 TransformSolutionCoord(&values[0], &values0[0],2);7446 TransformSolutionCoord(&values[0],nodes,NUMVERTICES,NDOF2); 7448 7447 7449 7448 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ … … 7756 7755 int i; 7757 7756 double values[numdof]; 7758 double values0[numdof];7759 7757 double vx[NUMVERTICES]; 7760 7758 double vy[NUMVERTICES]; … … 7769 7767 7770 7768 /*Use the dof list to index into the solution vector: */ 7771 for(i=0;i<numdof;i++) values 0[i]=solution[doflist[i]];7769 for(i=0;i<numdof;i++) values[i]=solution[doflist[i]]; 7772 7770 7773 7771 /*Transform solution in Cartesian Space*/ 7774 TransformSolutionCoord(&values[0], &values0[0],NDOF4);7772 TransformSolutionCoord(&values[0],nodes,NUMVERTICES,NDOF4); 7775 7773 7776 7774 /*Ok, we have vx and vy in values, fill in all arrays: */ … … 7811 7809 } 7812 7810 /*}}}*/ 7813 /*FUNCTION Penta::TransformStiffnessMatrixCoord{{{1*/7814 void Penta::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim){7815 7816 int i,j;7817 int numnodes = NUMVERTICES;7818 double *transform = NULL;7819 double *values = NULL;7820 7821 /*Copy current stiffness matrix*/7822 values=(double*)xmalloc(Ke->nrows*Ke->ncols*sizeof(double));7823 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];7824 7825 /*Get Coordinate Systems transform matrix*/7826 CoordinateSystemTransform(&transform,nodes,numnodes,dim);7827 7828 /*Transform matrix: T*Ke*T^t */7829 TripleMultiply(transform,numnodes*dim,numnodes*dim,1,7830 values,Ke->nrows,Ke->ncols,0,7831 transform,numnodes*dim,numnodes*dim,0,7832 &Ke->values[0],0);7833 7834 /*Free Matrix*/7835 xfree((void**)&transform);7836 xfree((void**)&values);7837 }7838 /*}}}*/7839 /*FUNCTION Penta::TransformLoadVectorCoord{{{1*/7840 void Penta::TransformLoadVectorCoord(ElementVector* pe,int dim){7841 7842 int i,j;7843 int numnodes = NUMVERTICES;7844 double *transform = NULL;7845 double *values = NULL;7846 7847 /*Copy current load vector*/7848 values=(double*)xmalloc(pe->nrows*sizeof(double));7849 for(i=0;i<pe->nrows;i++) values[i]=pe->values[i];7850 7851 /*Get Coordinate Systems transform matrix*/7852 CoordinateSystemTransform(&transform,nodes,numnodes,dim);7853 7854 /*Transform matrix: T^t*pe */7855 MatrixMultiply(transform,numnodes*dim,numnodes*dim,1,7856 values,pe->nrows,1,0,7857 &pe->values[0],0);7858 7859 /*Free Matrix*/7860 xfree((void**)&transform);7861 xfree((void**)&values);7862 }7863 /*}}}*/7864 /*FUNCTION Penta::TransformSolutionCoord{{{1*/7865 void Penta::TransformSolutionCoord(double* solution,double* solution0,int dim,bool is2d){7866 7867 int i,j;7868 int numnodes;7869 double *transform = NULL;7870 7871 /*Get Coordinate Systems transform matrix*/7872 if(is2d) numnodes=NUMVERTICES2D;7873 else numnodes=NUMVERTICES;7874 CoordinateSystemTransform(&transform,nodes,numnodes,dim);7875 7876 /*Transform matrix: T*U */7877 MatrixMultiply(transform,numnodes*dim,numnodes*dim,0,7878 solution0,numnodes*dim,1,0,7879 &solution[0],0);7880 7881 /*Free Matrix*/7882 xfree((void**)&transform);7883 }7884 /*}}}*/7885 7811 #endif 7886 7812 -
issm/trunk/src/c/objects/Elements/Penta.h
r10377 r10407 257 257 ElementVector* CreatePVectorDiagnosticVertVolume(void); 258 258 ElementVector* CreatePVectorDiagnosticVertBase(void); 259 void TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim);260 void TransformLoadVectorCoord(ElementVector* pe,int dim);261 void TransformSolutionCoord(double* solution,double* solution0,int dim,bool is2d=false);262 259 #endif 263 260 -
issm/trunk/src/c/objects/Elements/Tria.cpp
r10400 r10407 2707 2707 2708 2708 /*Transform Coordinate System*/ 2709 TransformStiffnessMatrixCoord(Ke, 2);2709 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,NDOF2); 2710 2710 2711 2711 /*Clean up and return*/ … … 2775 2775 2776 2776 /*Transform Coordinate System*/ 2777 TransformStiffnessMatrixCoord(Ke, 2);2777 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,NDOF2); 2778 2778 2779 2779 /*Clean up and return*/ … … 2851 2851 2852 2852 /*Transform coordinate system*/ 2853 TransformLoadVectorCoord(pe, 2);2853 TransformLoadVectorCoord(pe,nodes,NUMVERTICES,NDOF2); 2854 2854 2855 2855 /*Clean up and return*/ … … 2994 2994 int* doflist=NULL; 2995 2995 double rho_ice,g; 2996 double values0[numdof];2997 2996 double values[numdof]; 2998 2997 double vx[NUMVERTICES]; … … 3007 3006 3008 3007 /*Use the dof list to index into the solution vector: */ 3009 for(i=0;i<numdof;i++) values 0[i]=solution[doflist[i]];3008 for(i=0;i<numdof;i++) values[i]=solution[doflist[i]]; 3010 3009 3011 3010 /*Transform solution in Cartesian Space*/ 3012 TransformSolutionCoord(&values[0], &values0[0],2);3011 TransformSolutionCoord(&values[0],nodes,NUMVERTICES,NDOF2); 3013 3012 3014 3013 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ … … 3107 3106 /*Free ressources:*/ 3108 3107 xfree((void**)&doflist); 3109 }3110 /*}}}*/3111 /*FUNCTION Tria::TransformStiffnessMatrixCoord{{{1*/3112 void Tria::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim){3113 3114 int i,j;3115 int numnodes = NUMVERTICES;3116 double *transform = NULL;3117 double *values = NULL;3118 3119 /*Copy current stiffness matrix*/3120 values=(double*)xmalloc(Ke->nrows*Ke->ncols*sizeof(double));3121 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];3122 3123 /*Get Coordinate Systems transform matrix*/3124 CoordinateSystemTransform(&transform,nodes,numnodes,dim);3125 3126 /*Transform matrix: T*Ke*T^t */3127 TripleMultiply(transform,numnodes*dim,numnodes*dim,1,3128 values,Ke->nrows,Ke->ncols,0,3129 transform,numnodes*dim,numnodes*dim,0,3130 &Ke->values[0],0);3131 3132 /*Free Matrix*/3133 xfree((void**)&transform);3134 xfree((void**)&values);3135 }3136 /*}}}*/3137 /*FUNCTION Tria::TransformLoadVectorCoord{{{1*/3138 void Tria::TransformLoadVectorCoord(ElementVector* pe,int dim){3139 3140 int i,j;3141 int numnodes = NUMVERTICES;3142 double *transform = NULL;3143 double *values = NULL;3144 3145 /*Copy current load vector*/3146 values=(double*)xmalloc(pe->nrows*sizeof(double));3147 for(i=0;i<pe->nrows;i++) values[i]=pe->values[i];3148 3149 /*Get Coordinate Systems transform matrix*/3150 CoordinateSystemTransform(&transform,nodes,numnodes,dim);3151 3152 /*Transform matrix: T^t*pe */3153 MatrixMultiply(transform,numnodes*dim,numnodes*dim,1,3154 values,pe->nrows,1,0,3155 &pe->values[0],0);3156 3157 /*Free Matrix*/3158 xfree((void**)&transform);3159 xfree((void**)&values);3160 }3161 /*}}}*/3162 /*FUNCTION Tria::TransformSolutionCoord{{{1*/3163 void Tria::TransformSolutionCoord(double* solution,double* solution0,int dim){3164 3165 int i,j;3166 int numnodes = NUMVERTICES;3167 double *transform = NULL;3168 3169 /*Get Coordinate Systems transform matrix*/3170 CoordinateSystemTransform(&transform,nodes,numnodes,dim);3171 3172 /*Transform matrix: T*U */3173 MatrixMultiply(transform,numnodes*dim,numnodes*dim,0,3174 solution0,numnodes*dim,1,0,3175 &solution[0],0);3176 3177 /*Free Matrix*/3178 xfree((void**)&transform);3179 3108 } 3180 3109 /*}}}*/ -
issm/trunk/src/c/objects/Elements/Tria.h
r10377 r10407 203 203 void InputUpdateFromSolutionDiagnosticHoriz( double* solution); 204 204 void InputUpdateFromSolutionDiagnosticHutter( double* solution); 205 void TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim);206 void TransformLoadVectorCoord(ElementVector* pe,int dim);207 void TransformSolutionCoord(double* solution,double* solution0,int dim);208 205 #endif 209 206 -
issm/trunk/src/c/objects/Loads/Icefront.cpp
r10391 r10407 530 530 531 531 /*Transform load vector*/ 532 TransformLoadVectorCoord(pe, NUMVERTICESSEG,2);532 TransformLoadVectorCoord(pe,nodes,NUMVERTICESSEG,NDOF2); 533 533 534 534 /*Clean up and return*/ … … 537 537 } 538 538 /*}}}*/ 539 /*FUNCTION Icefront::TransformLoadVectorCoord{{{1*/540 void Icefront::TransformLoadVectorCoord(ElementVector* pe,int numnodes,int dimension){541 542 double *transform = NULL;543 double *values = NULL;544 545 /*Copy current load matrix*/546 values=(double*)xmalloc(pe->nrows*sizeof(double));547 for(int i=0;i<pe->nrows;i++) values[i]=pe->values[i];548 549 /*Get Coordinate Systems transform matrix*/550 CoordinateSystemTransform(&transform,nodes,numnodes,dimension);551 552 /*Transform matrix: T*pe */553 MatrixMultiply(transform,numnodes*dimension,numnodes*dimension,1,554 values,pe->nrows,1,0,555 &pe->values[0],0);556 557 /*Free Matrix*/558 xfree((void**)&transform);559 xfree((void**)&values);560 }561 /*}}}*/562 539 #endif 540 563 541 #ifdef _HAVE_CONTROL_ 564 542 /*FUNCTION Icefront::CreatePVectorAdjointHoriz {{{1*/ … … 669 647 670 648 /*Transform load vector*/ 671 TransformLoadVectorCoord(pe, NUMVERTICESQUA,2);649 TransformLoadVectorCoord(pe,nodes,NUMVERTICESQUA,NDOF2); 672 650 673 651 /*Clean up and return*/ … … 747 725 748 726 /*Transform load vector*/ 749 TransformLoadVectorCoord(pe, NUMVERTICESQUA,4);727 TransformLoadVectorCoord(pe,nodes,NUMVERTICESQUA,NDOF4); 750 728 751 729 /*Clean up and return*/ -
issm/trunk/src/c/objects/Loads/Icefront.h
r10381 r10407 83 83 void GetSegmentNormal(double* normal,double xyz_list[2][3]); 84 84 void GetQuadNormal(double* normal,double xyz_list[4][3]); 85 void TransformLoadVectorCoord(ElementVector* pe,int numnodes,int dimension);86 85 #ifdef _HAVE_CONTROL_ 87 86 ElementVector* CreatePVectorAdjointHoriz(void); -
issm/trunk/src/c/objects/Loads/Pengrid.cpp
r10395 r10407 560 560 561 561 /*Transform Coordinate System*/ 562 TransformStiffnessMatrixCoord(Ke, NDOF4);562 TransformStiffnessMatrixCoord(Ke,&node,NUMVERTICES,NDOF4); 563 563 564 564 /*Clean up and return*/ … … 691 691 } 692 692 /*}}}1*/ 693 /*FUNCTION Pengrid::TransformStiffnessMatrixCoord{{{1*/694 void Pengrid::TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim){695 696 int i,j;697 int numnodes = 1;698 double *transform = NULL;699 double *values = NULL;700 701 /*Copy current stiffness matrix*/702 values=(double*)xmalloc(Ke->nrows*Ke->ncols*sizeof(double));703 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];704 705 /*Get Coordinate Systems transform matrix*/706 CoordinateSystemTransform(&transform,&node,numnodes,dim);707 708 /*Transform matrix: T*Ke*T^t */709 TripleMultiply(transform,numnodes*dim,numnodes*dim,1,710 values,Ke->nrows,Ke->ncols,0,711 transform,numnodes*dim,numnodes*dim,0,712 &Ke->values[0],0);713 714 /*Free Matrix*/715 xfree((void**)&transform);716 xfree((void**)&values);717 }718 /*}}}*/719 693 /*FUNCTION Pengrid::UpdateInputs {{{1*/ 720 694 void Pengrid::UpdateInputs(double* solution){ -
issm/trunk/src/c/objects/Loads/Pengrid.h
r10395 r10407 90 90 void UpdateInputs(double* solution); 91 91 void ResetConstraint(void); 92 void TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim);93 92 /*}}}*/ 94 93 -
issm/trunk/src/c/shared/Elements/CoordinateSystemTransform.cpp
r10393 r10407 5 5 #include <math.h> 6 6 7 void CoordinateSystemTransform(double** ptransform,Node** nodes,int numnodes,int d imension){7 void CoordinateSystemTransform(double** ptransform,Node** nodes,int numnodes,int dofspernode){ 8 8 9 9 int i; … … 15 15 /*Some checks*/ 16 16 _assert_(numnodes && nodes); 17 if(d imension!=2 && dimension!=3 && dimension!=4) _error_("only 2d and 3d coordinate systems are supported");17 if(dofspernode!=2 && dofspernode!=3 && dofspernode!=4) _error_("list of dofs per node supported: 2, 3 and 4"); 18 18 19 19 /*Allocate and initialize transform matrix*/ 20 transform=(double*)xmalloc(numnodes*d imension*numnodes*dimension*sizeof(double));21 for(i=0;i<numnodes*d imension*numnodes*dimension;i++) transform[i]=0.0;20 transform=(double*)xmalloc(numnodes*dofspernode*numnodes*dofspernode*sizeof(double)); 21 for(i=0;i<numnodes*dofspernode*numnodes*dofspernode;i++) transform[i]=0.0; 22 22 23 23 /*Create transform matrix for all nodes (x,y for 2d and x,y,z for 3d). It is a block matrix … … 32 32 for(i=0;i<numnodes;i++){ 33 33 nodes[i]->GetCoordinateSystem(&coord_system[0][0]); 34 if(d imension==2){34 if(dofspernode==2){ 35 35 /*We remove the z component, we need to renormalize x and y*/ 36 36 x_norm = sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]); 37 37 y_norm = sqrt( coord_system[0][1]*coord_system[0][1] + coord_system[1][1]*coord_system[1][1]); 38 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+0] = coord_system[0][0]/x_norm;39 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+1] = coord_system[0][1]/y_norm;40 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+0] = coord_system[1][0]/x_norm;41 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+1] = coord_system[1][1]/y_norm;38 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+0] = coord_system[0][0]/x_norm; 39 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+1] = coord_system[0][1]/y_norm; 40 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+0] = coord_system[1][0]/x_norm; 41 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+1] = coord_system[1][1]/y_norm; 42 42 } 43 else if(d imension==3){44 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+0] = coord_system[0][0];45 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+1] = coord_system[0][1];46 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+2] = coord_system[0][2];47 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+0] = coord_system[1][0];48 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+1] = coord_system[1][1];49 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+2] = coord_system[1][2];50 transform[(d imension*numnodes)*(i*dimension+2) + i*dimension+0] = coord_system[2][0];51 transform[(d imension*numnodes)*(i*dimension+2) + i*dimension+1] = coord_system[2][1];52 transform[(d imension*numnodes)*(i*dimension+2) + i*dimension+2] = coord_system[2][2];43 else if(dofspernode==3){ 44 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+0] = coord_system[0][0]; 45 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+1] = coord_system[0][1]; 46 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+2] = coord_system[0][2]; 47 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+0] = coord_system[1][0]; 48 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+1] = coord_system[1][1]; 49 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+2] = coord_system[1][2]; 50 transform[(dofspernode*numnodes)*(i*dofspernode+2) + i*dofspernode+0] = coord_system[2][0]; 51 transform[(dofspernode*numnodes)*(i*dofspernode+2) + i*dofspernode+1] = coord_system[2][1]; 52 transform[(dofspernode*numnodes)*(i*dofspernode+2) + i*dofspernode+2] = coord_system[2][2]; 53 53 } 54 else if(d imension==4){54 else if(dofspernode==4){ 55 55 /*Only the first 3 coordinates are changed (x,y,z), leave the others (P) unchanged*/ 56 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+0] = coord_system[0][0];57 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+1] = coord_system[0][1];58 transform[(d imension*numnodes)*(i*dimension+0) + i*dimension+2] = coord_system[0][2];59 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+0] = coord_system[1][0];60 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+1] = coord_system[1][1];61 transform[(d imension*numnodes)*(i*dimension+1) + i*dimension+2] = coord_system[1][2];62 transform[(d imension*numnodes)*(i*dimension+2) + i*dimension+0] = coord_system[2][0];63 transform[(d imension*numnodes)*(i*dimension+2) + i*dimension+1] = coord_system[2][1];64 transform[(d imension*numnodes)*(i*dimension+2) + i*dimension+2] = coord_system[2][2];65 transform[(d imension*numnodes)*(i*dimension+3) + i*dimension+3] = 1.0;56 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+0] = coord_system[0][0]; 57 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+1] = coord_system[0][1]; 58 transform[(dofspernode*numnodes)*(i*dofspernode+0) + i*dofspernode+2] = coord_system[0][2]; 59 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+0] = coord_system[1][0]; 60 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+1] = coord_system[1][1]; 61 transform[(dofspernode*numnodes)*(i*dofspernode+1) + i*dofspernode+2] = coord_system[1][2]; 62 transform[(dofspernode*numnodes)*(i*dofspernode+2) + i*dofspernode+0] = coord_system[2][0]; 63 transform[(dofspernode*numnodes)*(i*dofspernode+2) + i*dofspernode+1] = coord_system[2][1]; 64 transform[(dofspernode*numnodes)*(i*dofspernode+2) + i*dofspernode+2] = coord_system[2][2]; 65 transform[(dofspernode*numnodes)*(i*dofspernode+3) + i*dofspernode+3] = 1.0; 66 66 } 67 67 } -
issm/trunk/src/c/shared/Elements/elements.h
r10367 r10407 17 17 int* GetLocalDofList( Node** nodes,int numnodes,int setenum,int approximation_enum); 18 18 int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation_enum); 19 void CoordinateSystemTransform(double** ptransform,Node** nodes,int numnodes,int dimension); 19 void CoordinateSystemTransform(double** ptransform,Node** nodes,int numnodes,int dofspernode); 20 #ifdef _HAVE_DIAGNOSTIC_ 21 void TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int dofspernode); 22 void TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int dofspernode); 23 void TransformSolutionCoord(double* solution,Node** nodes,int numnodes,int dofspernode); 24 #endif 20 25 21 26 inline void printarray(double* array,int lines,int cols=1){ … … 23 28 for(int i=0;i<lines;i++){ 24 29 printf(" [ "); 25 for(int j=0;j<cols;j++) printf(" % 12.6g ",array[i*cols+j]);30 for(int j=0;j<cols;j++) printf(" %7.5g ",array[i*cols+j]); 26 31 printf(" ]\n"); 27 32 }
Note:
See TracChangeset
for help on using the changeset viewer.