Changeset 17183
- Timestamp:
- 01/28/14 11:53:06 (11 years ago)
- Location:
- issm/trunk-jpl/src/c/analyses
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
r17005 r17183 64 64 65 65 /*Intermediaries */ 66 int meshtype,dim; 66 67 IssmDouble Jdet,D; 67 68 IssmDouble *xyz_list = NULL; 69 70 /*Get dimension*/ 71 element->FindParam(&meshtype,MeshTypeEnum); 72 switch(meshtype){ 73 case Mesh2DverticalEnum: dim = 2; break; 74 case Mesh3DEnum: dim = 3; break; 75 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); 76 } 68 77 69 78 /*Fetch number of nodes and dof for this finite element*/ … … 85 94 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 86 95 element->NodalFunctions(Bprime,gauss); 87 GetB(B,element, xyz_list,gauss);96 GetB(B,element,dim,xyz_list,gauss); 88 97 D=gauss->weight*Jdet; 89 98 … … 187 196 return NULL; 188 197 }/*}}}*/ 189 void ExtrudeFromBaseAnalysis::GetB(IssmDouble* B,Element* element, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/198 void ExtrudeFromBaseAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 190 199 /* Compute B matrix. B=[dh1/dz dh2/dz dh3/dz dh4/dz dh5/dz dh6/dz]; 191 200 where hi is the interpolation function for node i.*/ … … 195 204 196 205 /*Get nodal functions derivatives*/ 197 IssmDouble* dbasis=xNew<IssmDouble>( 2*numnodes);206 IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes); 198 207 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 199 208 200 209 /*Build B: */ 201 210 for(int i=0;i<numnodes;i++){ 202 B[i] = dbasis[ 1*numnodes+i];211 B[i] = dbasis[(dim-1)*numnodes+i]; 203 212 } 204 213 -
issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h
r17005 r17183 29 29 ElementMatrix* CreateKMatrixBed(Element* element); 30 30 ElementVector* CreatePVector(Element* element); 31 void GetB(IssmDouble* B,Element* element, IssmDouble* xyz_list,Gauss* gauss);31 void GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss); 32 32 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element); 33 33 void InputUpdateFromSolution(IssmDouble* solution,Element* element); -
issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp
r17179 r17183 64 64 65 65 /*Intermediaries */ 66 int meshtype,dim; 66 67 IssmDouble Jdet,D; 67 68 IssmDouble *xyz_list = NULL; 69 70 /*Get dimension*/ 71 element->FindParam(&meshtype,MeshTypeEnum); 72 switch(meshtype){ 73 case Mesh2DverticalEnum: dim = 2; break; 74 case Mesh3DEnum: dim = 3; break; 75 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); 76 } 68 77 69 78 /*Fetch number of nodes and dof for this finite element*/ … … 85 94 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 86 95 element->NodalFunctions(Bprime,gauss); 87 GetB(B,element, xyz_list,gauss);96 GetB(B,element,dim,xyz_list,gauss); 88 97 D=gauss->weight*Jdet; 89 98 … … 187 196 return NULL; 188 197 }/*}}}*/ 189 void ExtrudeFromTopAnalysis::GetB(IssmDouble* B,Element* element, IssmDouble* xyz_list,Gauss* gauss){/*{{{*/198 void ExtrudeFromTopAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 190 199 /* Compute B matrix. B=[dh1/dz dh2/dz dh3/dz dh4/dz dh5/dz dh6/dz]; 191 200 where hi is the interpolation function for node i.*/ … … 195 204 196 205 /*Get nodal functions derivatives*/ 197 IssmDouble* dbasis=xNew<IssmDouble>( 2*numnodes);206 IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes); 198 207 element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss); 199 208 200 209 /*Build B: */ 201 210 for(int i=0;i<numnodes;i++){ 202 B[i] = dbasis[ 1*numnodes+i];211 B[i] = dbasis[(dim-1)*numnodes+i]; 203 212 } 204 213 -
issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h
r17179 r17183 29 29 ElementMatrix* CreateKMatrixBed(Element* element); 30 30 ElementVector* CreatePVector(Element* element); 31 void GetB(IssmDouble* B,Element* element, IssmDouble* xyz_list,Gauss* gauss);31 void GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss); 32 32 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element); 33 33 void InputUpdateFromSolution(IssmDouble* solution,Element* element);
Note:
See TracChangeset
for help on using the changeset viewer.