Changeset 17183


Ignore:
Timestamp:
01/28/14 11:53:06 (11 years ago)
Author:
Mathieu Morlighem
Message:

BUG: needed to at dimension so that we get z axis properly

Location:
issm/trunk-jpl/src/c/analyses
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp

    r17005 r17183  
    6464
    6565        /*Intermediaries */
     66        int         meshtype,dim;
    6667        IssmDouble  Jdet,D;
    6768        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        }
    6877
    6978        /*Fetch number of nodes and dof for this finite element*/
     
    8594                element->JacobianDeterminant(&Jdet,xyz_list,gauss);
    8695                element->NodalFunctions(Bprime,gauss);
    87                 GetB(B,element,xyz_list,gauss);
     96                GetB(B,element,dim,xyz_list,gauss);
    8897                D=gauss->weight*Jdet;
    8998
     
    187196        return NULL;
    188197}/*}}}*/
    189 void ExtrudeFromBaseAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
     198void ExtrudeFromBaseAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
    190199        /*      Compute B  matrix. B=[dh1/dz dh2/dz dh3/dz dh4/dz dh5/dz dh6/dz];
    191200                where hi is the interpolation function for node i.*/
     
    195204
    196205        /*Get nodal functions derivatives*/
    197         IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
     206        IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
    198207        element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
    199208
    200209        /*Build B: */
    201210        for(int i=0;i<numnodes;i++){
    202                 B[i] = dbasis[1*numnodes+i]; 
     211                B[i] = dbasis[(dim-1)*numnodes+i];
    203212        }
    204213
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h

    r17005 r17183  
    2929                ElementMatrix* CreateKMatrixBed(Element* element);
    3030                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);
    3232                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    3333                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp

    r17179 r17183  
    6464
    6565        /*Intermediaries */
     66        int         meshtype,dim;
    6667        IssmDouble  Jdet,D;
    6768        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        }
    6877
    6978        /*Fetch number of nodes and dof for this finite element*/
     
    8594                element->JacobianDeterminant(&Jdet,xyz_list,gauss);
    8695                element->NodalFunctions(Bprime,gauss);
    87                 GetB(B,element,xyz_list,gauss);
     96                GetB(B,element,dim,xyz_list,gauss);
    8897                D=gauss->weight*Jdet;
    8998
     
    187196        return NULL;
    188197}/*}}}*/
    189 void ExtrudeFromTopAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
     198void ExtrudeFromTopAnalysis::GetB(IssmDouble* B,Element* element,int dim,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
    190199        /*      Compute B  matrix. B=[dh1/dz dh2/dz dh3/dz dh4/dz dh5/dz dh6/dz];
    191200                where hi is the interpolation function for node i.*/
     
    195204
    196205        /*Get nodal functions derivatives*/
    197         IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
     206        IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
    198207        element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
    199208
    200209        /*Build B: */
    201210        for(int i=0;i<numnodes;i++){
    202                 B[i] = dbasis[1*numnodes+i]; 
     211                B[i] = dbasis[(dim-1)*numnodes+i];
    203212        }
    204213
  • issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h

    r17179 r17183  
    2929                ElementMatrix* CreateKMatrixBed(Element* element);
    3030                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);
    3232                void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
    3333                void InputUpdateFromSolution(IssmDouble* solution,Element* element);
Note: See TracChangeset for help on using the changeset viewer.