Changeset 5259


Ignore:
Timestamp:
08/13/10 16:59:27 (15 years ago)
Author:
seroussi
Message:

added approximation_type argument in GetNumberOfDofs

Location:
issm/trunk/src/c/objects
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r5258 r5259  
    45334533        /*First, figure out size of doflist: */
    45344534        for(i=0;i<6;i++){
    4535                 numberofdofs+=nodes[i]->GetNumberOfDofs();
     4535                numberofdofs+=nodes[i]->GetNumberOfDofs(approximation_enum);
    45364536        }
    45374537
     
    45434543        for(i=0;i<6;i++){
    45444544                nodes[i]->GetDofList(doflist+count,approximation_enum);
    4545                 count+=nodes[i]->GetNumberOfDofs();
     4545                count+=nodes[i]->GetNumberOfDofs(approximation_enum);
    45464546        }
    45474547
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r5258 r5259  
    55435543        /*First, figure out size of doflist: */
    55445544        for(i=0;i<3;i++){
    5545                 numberofdofs+=nodes[i]->GetNumberOfDofs();
     5545                numberofdofs+=nodes[i]->GetNumberOfDofs(approximation_enum);
    55465546        }
    55475547
     
    55525552        count=0;
    55535553        for(i=0;i<3;i++){
    5554                 nodes[i]->GetDofList(doflist+count);
    5555                 count+=nodes[i]->GetNumberOfDofs();
     5554                nodes[i]->GetDofList(doflist+count,approximation_enum);
     5555                count+=nodes[i]->GetNumberOfDofs(approximation_enum);
    55565556        }
    55575557
  • issm/trunk/src/c/objects/Node.cpp

    r5258 r5259  
    334334void  Node::GetDofList(int* outdoflist,int approximation_enum){
    335335        int i;
    336         for(i=0;i<this->indexing.numberofdofs;i++){
    337                 outdoflist[i]=indexing.doflist[i];
     336        int count=0;
     337
     338        if(approximation_enum && this->indexing.doftype){ //if an approximation is specified and this node has several approsimations
     339                for(i=0;i<this->indexing.numberofdofs;i++){
     340                        if(indexing.doftype[i]==approximation_enum){
     341                                outdoflist[count]=indexing.doflist[i];
     342                                count++;
     343                        }
     344                }
     345                ISSMASSERT(count);
     346        }
     347        else{
     348                for(i=0;i<this->indexing.numberofdofs;i++){
     349                        outdoflist[i]=indexing.doflist[i];
     350                }
    338351        }
    339352}
     
    455468/*}}}*/
    456469/*FUNCTION Node::GetNumberOfDofs{{{1*/
    457 int   Node::GetNumberOfDofs(){
    458        
    459         return this->indexing.numberofdofs;
     470int   Node::GetNumberOfDofs(int approximation_enum){
     471       
     472        int i;
     473        int numdofs=0;
     474
     475        /*Count the dofs if an approximation is specified and the node contains several dofs type*/
     476        if(approximation_enum && this->indexing.doftype){
     477                for(i=0;i<this->indexing.numberofdofs;i++){
     478                        if(this->indexing.doftype[i]==approximation_enum) numdofs++;
     479                }
     480        }
     481        else numdofs=this->indexing.numberofdofs;
     482
     483        ISSMASSERT(numdofs);
     484        return numdofs;
    460485
    461486}
  • issm/trunk/src/c/objects/Node.h

    r5258 r5259  
    6868                void  SetVertexDof(int in_dof);
    6969                bool  InAnalysis(int analysis_type);
    70                 int   GetNumberOfDofs();
     70                int   GetNumberOfDofs(int approximation_enum=0);
    7171                int   IsClone();
    7272                void  ApplyConstraint(Vec yg,int dof,double value);
Note: See TracChangeset for help on using the changeset viewer.