Changeset 13903


Ignore:
Timestamp:
11/07/12 16:43:35 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added SetwiseNodeConnectivity for Penta

Location:
issm/trunk-jpl/src/c/classes/objects/Elements
Files:
3 edited

Legend:

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

    r13892 r13903  
    26052605        if (this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();
    26062606        else this->nodes=NULL;
     2607}
     2608/*}}}*/
     2609/*FUNCTION Penta::SetwiseNodeConnectivity{{{*/
     2610void Penta::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
     2611
     2612        int index;
     2613        int set_enum;
     2614
     2615        /*Find node index*/
     2616        index = this->GetNodeIndex(node);
     2617
     2618        /*Output */
     2619        int d_nz = 0;
     2620        int o_nz = 0;
     2621
     2622        /*Loop over all nodes*/
     2623        for(int i=0;i<6;i++){
     2624
     2625                if(!flags[this->nodes[i]->Sid()]){
     2626
     2627                        /*flag current node so that no other element processes it*/
     2628                        flags[this->nodes[i]->Sid()]=true;
     2629
     2630                        /*What set are we interested in?*/
     2631                        if(i!=index)
     2632                         set_enum=set2_enum;
     2633                        else
     2634                         set_enum=set1_enum;
     2635
     2636                        /*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
     2637                        switch(set2_enum){
     2638                                case FsetEnum:
     2639                                        if(nodes[i]->indexing.fsize){
     2640                                                if(this->nodes[i]->IsClone())
     2641                                                 o_nz += 1;
     2642                                                else
     2643                                                 d_nz += 1;
     2644                                        }
     2645                                        break;
     2646                                case GsetEnum:
     2647                                        if(nodes[i]->indexing.gsize){
     2648                                                if(this->nodes[i]->IsClone())
     2649                                                 o_nz += 1;
     2650                                                else
     2651                                                 d_nz += 1;
     2652                                        }
     2653                                        break;
     2654                                case SsetEnum:
     2655                                        if(nodes[i]->indexing.ssize){
     2656                                                if(this->nodes[i]->IsClone())
     2657                                                 o_nz += 1;
     2658                                                else
     2659                                                 d_nz += 1;
     2660                                        }
     2661                                        break;
     2662                                default: _error_("not supported");
     2663                        }
     2664                }
     2665        }
     2666
     2667        /*Assign output pointers: */
     2668        *pd_nz=d_nz;
     2669        *po_nz=o_nz;
    26072670}
    26082671/*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h

    r13892 r13903  
    8080                void   Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
    8181                void   SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
    82                 void   SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum){_error_("not implemented yet");};
     82                void   SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
    8383                void   CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,Vector<IssmDouble>* df);
    8484                void   CreatePVector(Vector<IssmDouble>* pf);
  • issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp

    r13892 r13903  
    162162}
    163163/*}}}*/
    164 /*FUNCTION Tria::GetDofList {{{*/
     164/*FUNCTION Tria::SetwiseNodeConnectivity{{{*/
    165165void Tria::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int set1_enum,int set2_enum){
    166166
Note: See TracChangeset for help on using the changeset viewer.