Changeset 15040


Ignore:
Timestamp:
05/16/13 15:18:24 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: do not use nodes to get vertex info

Location:
issm/trunk-jpl/src/c/classes
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r15037 r15040  
    933933void  Penta::GetVertexPidList(int* doflist){
    934934
    935         int i;
    936         for(i=0;i<6;i++) doflist[i]=nodes[i]->GetVertexPid();
     935        for(int i=0;i<6;i++) doflist[i]=vertices[i]->Pid();
    937936
    938937}
     
    941940void  Penta::GetVertexSidList(int* sidlist){
    942941
    943         int i;
    944         for(i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->GetVertexSid();
     942        for(int i=0;i<NUMVERTICES;i++) sidlist[i]=vertices[i]->Sid();
    945943
    946944}
     
    20902088                                /*Get values on the 6 vertices*/
    20912089                                for (int i=0;i<6;i++){
    2092                                         values[i]=vector[this->nodes[i]->GetVertexPid()];
     2090                                        values[i]=vector[this->vertices[i]->Pid()];
    20932091                                }
    20942092
     
    24262424        found=0;
    24272425        for(i=0;i<NUMVERTICES;i++){
    2428                 if(index==nodes[i]->GetVertexId()){
     2426                if(index==vertices[i]->Id()){
    24292427                        /*Do we have natureofdataenum in our inputs? :*/
    24302428                        if(data){
     
    24532451
    24542452        /*will be needed later: */
    2455         for(i=0;i<6;i++) vertices_ids[i]=nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
     2453        for(i=0;i<6;i++) vertices_ids[i]=vertices[i]->Id(); //vertices id start at column 3 of the patch.
    24562454
    24572455        for(i=0;i<this->results->Size();i++){
     
    50014999        /*get gradient indices*/
    50025000        for(int i=0;i<NUMVERTICES;i++){
    5003                 indexing[i]=num_controls*this->nodes[i]->GetVertexPid() + control_index;
     5001                indexing[i]=num_controls*this->vertices[i]->Pid() + control_index;
    50045002        }
    50055003
     
    57675765                        /*Get values on the 6 vertices*/
    57685766                        for (i=0;i<6;i++){
    5769                                 values[i]=vector[this->nodes[i]->GetVertexSid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
     5767                                values[i]=vector[this->vertices[i]->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
    57705768                        }
    57715769
     
    58875885                                /*create input values: */
    58885886                                for(i=0;i<6;i++){
    5889                                         row=this->nodes[i]->GetVertexSid();
     5887                                        row=this->vertices[i]->Sid();
    58905888                                        values[i]=(IssmDouble)matrix[ncols*row+t];
    58915889                                }
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15037 r15040  
    13601360void  Tria::GetVertexPidList(int* doflist){
    13611361
    1362         int i;
    1363         for(i=0;i<3;i++) doflist[i]=nodes[i]->GetVertexPid();
     1362        for(int i=0;i<3;i++) doflist[i]=vertices[i]->Pid();
    13641363
    13651364}
     
    13671366/*FUNCTION Tria::GetVertexSidList {{{*/
    13681367void  Tria::GetVertexSidList(int* sidlist){
    1369         for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->GetVertexSid();
     1368        for(int i=0;i<NUMVERTICES;i++) sidlist[i]=vertices[i]->Sid();
    13701369}
    13711370/*}}}*/
     
    18861885                /*Get values on the 3 vertices*/
    18871886                for (int i=0;i<3;i++){
    1888                         values[i]=vector[this->nodes[i]->GetVertexPid()];
     1887                        values[i]=vector[this->vertices[i]->Pid()];
    18891888                }
    18901889                /*update input*/
     
    19001899                /*Get values on the 3 vertices*/
    19011900                for (int i=0;i<3;i++){
    1902                         values[i]=vector[this->nodes[i]->GetVertexSid()];
     1901                        values[i]=vector[this->vertices[i]->Sid()];
    19031902                }
    19041903                /*update input*/
     
    23132312        found=0;
    23142313        for(int i=0;i<NUMVERTICES;i++){
    2315                 if(index==nodes[i]->GetVertexId()){
     2314                if(index==vertices[i]->Id()){
    23162315                        /*Do we have natureofdataenum in our inputs? :*/
    23172316                        if(data){
     
    23412340        row=*prow;
    23422341
    2343         for(i=0;i<3;i++) vertices_ids[i]=nodes[i]->GetVertexId(); //vertices id start at column 3 of the patch.
     2342        for(i=0;i<3;i++) vertices_ids[i]=vertices[i]->Id(); //vertices id start at column 3 of the patch.
    23442343
    23452344        for(i=0;i<this->results->Size();i++){
     
    45554554        /*get gradient indices*/
    45564555        for(int i=0;i<NUMVERTICES;i++){
    4557                 indexing[i]=num_controls*this->nodes[i]->GetVertexPid() + control_index;
     4556                indexing[i]=num_controls*this->vertices[i]->Pid() + control_index;
    45584557        }
    45594558
     
    65516550                        /*Get values on the 3 vertices*/
    65526551                        for (i=0;i<3;i++){
    6553                                 values[i]=vector[this->nodes[i]->GetVertexSid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
     6552                                values[i]=vector[this->vertices[i]->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
    65546553                        }
    65556554
     
    66576656                                /*create input values: */
    66586657                                for(i=0;i<3;i++){
    6659                                         row=this->nodes[i]->GetVertexSid();
     6658                                        row=this->vertices[i]->Sid();
    66606659                                        values[i]=(IssmDouble)matrix[ncols*row+t];
    66616660                                }
  • issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp

    r15012 r15040  
    198198
    199199                        /*Prepare index list*/
    200                         int doflist1[3];
    201                         for(int i=0;i<3;i++) doflist1[i]=((Tria*)element)->nodes[i]->GetVertexPid();
     200                        int vertexpidlist[3];
     201                        ((Tria*)element)->GetVertexPidList(&vertexpidlist[0]);
    202202
    203203                        /*Get input (either in element or material)*/
     
    206206
    207207                        /*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
    208                         input->GetVectorFromInputs(vector,&doflist1[0]);}
     208                        input->GetVectorFromInputs(vector,&vertexpidlist[0]);}
    209209                        break;
    210210
     
    629629                                case TriaEnum: {
    630630                                        IssmDouble values[3];
    631                                         for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexPid()];
     631                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Pid()];
    632632                                        this->inputs->AddInput(new TriaP1Input(name,values));
    633633                                        return;
     
    671671                                case TriaEnum: {
    672672                                        IssmDouble values[3];
    673                                         for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexSid()]; //use sid list, to index into serial oriented vector
     673                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //use sid list, to index into serial oriented vector
    674674                                        this->inputs->AddInput(new TriaP1Input(name,values));
    675675                                        /*Special case for rheology B in 2D: Pourave land for this solution{{{*/
  • issm/trunk-jpl/src/c/classes/Materials/Matice.cpp

    r15012 r15040  
    2020#include "../Elements/Penta.h"
    2121#include "../Params/Parameters.h"
     22#include "../Vertex.h"
    2223#include "../Hook.h"
    2324#include "../Node.h"
     
    190191                case TriaEnum:{
    191192
    192                         /*Prepare index list*/
    193                         int doflist1[3];
    194                         for(int i=0;i<3;i++) doflist1[i]=((Tria*)element)->nodes[i]->GetVertexPid();
    195 
    196                         /*Get input (either in element or material)*/
    197                         Input* input=inputs->GetInput(input_enum);
    198                         if(!input) _error_("Input " << EnumToStringx(input_enum) << " not found in material");
    199 
    200                         /*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
    201                         input->GetVectorFromInputs(vector,&doflist1[0]);}
    202                         break;
     193                                                          /*Prepare index list*/
     194                                                          int vertexpidlist[3];
     195                                                          ((Tria*)element)->GetVertexPidList(&vertexpidlist[0]);
     196
     197                                                                 /*Get input (either in element or material)*/
     198                                                                 Input* input=inputs->GetInput(input_enum);
     199                                                          if(!input) _error_("Input " << EnumToStringx(input_enum) << " not found in material");
     200
     201                                                          /*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
     202                                                          input->GetVectorFromInputs(vector,&vertexpidlist[0]);}
     203                                                break;
    203204
    204205                default: _error_("element " << EnumToStringx(element->ObjectEnum()) << " not implemented yet");
     
    562563                                case TriaEnum: {
    563564                                        IssmDouble values[3];
    564                                         for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexPid()];
     565                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Pid()];
    565566                                        this->inputs->AddInput(new TriaP1Input(name,values));
    566567                                        return;
     
    604605                                case TriaEnum: {
    605606                                        IssmDouble values[3];
    606                                         for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexSid()]; //index into serial oriented vector
     607                                        for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //index into serial oriented vector
    607608                                        this->inputs->AddInput(new TriaP1Input(name,values));
    608609                                        /*Special case for rheology B in 2D: Pourave land for this solution{{{*/
  • issm/trunk-jpl/src/c/classes/Node.cpp

    r15038 r15040  
    384384/*FUNCTION Node::Sid{{{*/
    385385int    Node::Sid(void){ return sid; }
    386 /*}}}*/
    387 /*FUNCTION Node::GetVertexId {{{*/
    388 int   Node::GetVertexId(void){
    389 
    390         Vertex*  vertex=NULL;
    391 
    392         vertex=(Vertex*)hvertex->delivers();
    393         return vertex->id;
    394 }
    395 /*}}}*/
    396 /*FUNCTION Node::GetVertexPid{{{*/
    397 int   Node::GetVertexPid(void){
    398 
    399         Vertex*  vertex=NULL;
    400 
    401         vertex=(Vertex*)hvertex->delivers();
    402         return vertex->pid;
    403 }
    404 /*}}}*/
    405 /*FUNCTION Node::GetVertexSid{{{*/
    406 int  Node::GetVertexSid(void){
    407 
    408         Vertex* vertex=NULL;
    409 
    410         vertex=(Vertex*)this->hvertex->delivers();
    411 
    412         return vertex->sid;
    413 }
    414386/*}}}*/
    415387#ifdef _HAVE_DIAGNOSTIC_
  • issm/trunk-jpl/src/c/classes/Node.h

    r15038 r15040  
    8686                void   GetDofList(int* poutdoflist,int approximation_enum,int setenum);
    8787                void   GetLocalDofList(int* poutdoflist,int approximation_enum,int setenum);
    88                 int    GetVertexId(void);
    89                 int    GetVertexPid(void);
    90                 int    GetVertexSid(void);
    9188                void   FreezeDof(int dof);
    9289                int    IsFloating();
  • issm/trunk-jpl/src/c/classes/Vertex.cpp

    r15012 r15040  
    121121int    Vertex::Sid(void){ return sid; }
    122122/*}}}*/
     123/*FUNCTION Vertex::Pid{{{*/
     124int    Vertex::Pid(void){ return pid; }
     125/*}}}*/
    123126/*FUNCTION Vertex::UpdateVertexPosition {{{*/
    124127void  Vertex::UpdatePosition(Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* thickness,IssmDouble* bed){
  • issm/trunk-jpl/src/c/classes/Vertex.h

    r15012 r15040  
    4545                /*}}}*/
    4646                /*Vertex management:*/
     47                int        Pid(void);
    4748                int        Sid(void);
    4849                int        Connectivity(void);
Note: See TracChangeset for help on using the changeset viewer.