Changeset 13894


Ignore:
Timestamp:
11/07/12 13:47:20 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: still working on matric preallocation, nothing new at this point. Temporary commit

File:
1 edited

Legend:

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

    r13889 r13894  
    353353        Vector<IssmDouble> *df   = NULL;
    354354
     355        //bool oldalloc=false;
    355356        bool oldalloc=true;
    356357
     
    413414        int     *next         = NULL;
    414415        int     *count2offset = NULL;
     416        int     * sidlist     = NULL;
    415417
    416418        /*output*/
     
    425427        int numnodes            = nodes->NumberOfNodes(analysis_type);
    426428        int numberofdofspernode = nodes->MaxNumDofs(configuration_type,GsetEnum);
     429        int N                   = nodes->NumberOfDofs(analysis_type,set2enum);
    427430        int m                   = nodes->NumberOfDofsLocal(analysis_type,set1enum);
    428431        int numnodesperobject   = elements->MaxNumNodes();
     
    439442        k=0;
    440443        for(i=0;i<elements->Size();i++){
    441                 element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
    442                 for(int j=0;j<numnodesperobject;j++){
    443                         index =dynamic_cast<Tria*>(element)->nodes[j]->sid;//starts at 0 for a given analysis
    444                         _assert_(k>=0 && k<numnodes*elements->Size() && index>=0 && index<numnodes);
     444                element = dynamic_cast<Element*>(elements->GetObjectByOffset(i));
     445                sidlist = xNew<int>(element->GetNumberOfNodes());
     446                element->GetNodesSidList(sidlist);
     447
     448                for(j=0;j<element->GetNumberOfNodes();j++){
     449                        index = sidlist[j];
     450                        _assert_(index>=0 && index<numnodes);
    445451
    446452                        count2offset[k]=i;
     
    448454                        head[index]=k++;
    449455                }
     456                for(j=0;j<numnodesperobject-element->GetNumberOfNodes();j++) k++;
     457
     458                xDelete<int>(sidlist);
    450459        }
    451460
     
    503512                                        d_nnz[count]=numberofdofspernode*(d_connectivity[node->Sid()] + all_connectivity_clone[node->Sid()]);
    504513                                        o_nnz[count]=numberofdofspernode*(o_connectivity[node->Sid()] + all_connectivity_clone[node->Sid()]);
    505                                         //if(d_nnz[count]>m)   d_nnz[count]=m;
    506                                         //if(o_nnz[count]>fsize-m) o_nnz[count]=fsize-m;
     514                                        if(d_nnz[count]>m)   d_nnz[count]=m;
     515                                        if(o_nnz[count]>N-m) o_nnz[count]=N-m;
    507516                                        count++;
    508517                                }
     
    719728        IssmDouble          kmax;
    720729
    721 
    722730        /*Display message*/
    723731        if(VerboseModule()) _pprintLine_("   Generating matrices");
     
    774782        //Kff->AllocationInfo();
    775783        //Kfs->AllocationInfo();
    776         //_error_("STOP");
    777784
    778785        /*Assign output pointers: */
Note: See TracChangeset for help on using the changeset viewer.