Changeset 21540


Ignore:
Timestamp:
02/09/17 17:55:28 (8 years ago)
Author:
tsantos
Message:

CHG: changes in AMR methods, minor. (NOTE: AMR not working yet)

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

Legend:

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

    r21528 r21540  
    180180    /*Verify the new geometry*/
    181181    this->CheckMesh(nvertices,nelements,nsegments,this->elementswidth,px,py,pz,pelements,psegments);
    182      
     182
     183         _printf_("\trefinement process done!\n\n");
     184
    183185    delete nohangingnodesmesh;
    184186}
     
    187189   
    188190    /*Refine mesh hmax times*/
    189     for(int hlevel=1;hlevel<=this->hmax;hlevel++){
     191   _printf_("\n\trefinement process (hmax = " << this->hmax << ")\n");
     192        _printf_("\tprogress:  ");
     193        for(int hlevel=1;hlevel<=this->hmax;hlevel++){
    190194       
    191195        /*Set elements to be refined using some criteria*/
     
    195199        /*Refine the mesh*/
    196200        this->RefineMesh(gmesh, ElemVec);
    197     }
    198    
     201                 
     202                  _printf_("*  ");
     203    }
     204    _printf_("\n");
    199205}
    200206/*}}}*/
     
    235241/*}}}*/
    236242void AdaptiveMeshRefinement::RefineMeshToAvoidHangingNodes(TPZGeoMesh *gmesh){/*{{{*/
    237    
     243   
     244         _printf_("\trefine to avoid hanging nodes...\n");
    238245    /*Refine elements to avoid hanging nodes: non-uniform refinement*/
    239246         const int NElem = gmesh->NElements();
     
    389396   
    390397    // itapopo inserir modo de encontrar criterio TESTING!!!! Come to false!
    391          if(true) this->TagAllElements(gmesh,ElemVec); //uniform, refine all elements!
     398         if(false) this->TagAllElements(gmesh,ElemVec); //uniform, refine all elements!
    392399
    393400    /* Adaptive refinement. This refines some elements following some criteria*/
    394     //this->TagElementsNearGroundingLine(gmesh, GLvec, hlevel, ElemVec);
     401    this->TagElementsNearGroundingLine(gmesh, GLvec, hlevel, ElemVec);
    395402
    396403}
     
    410417   
    411418    /* Tag elements near grounding line */
    412     double MaxRegion = 20000.; //itapopo
    413     double alpha = 1.0;         //itapopo
     419    double MaxRegion = 40000.; //itapopo
     420    double alpha = log(1.5);         //itapopo
    414421    double MaxDistance = MaxRegion / std::exp(alpha*(hlevel-1));
    415422   
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r21529 r21540  
    29422942   if(my_rank==0){
    29432943                this->amr = new AdaptiveMeshRefinement();
    2944                 int hmax         = 0; //itapopo: it must be defined by interface. Using 2 just to test
     2944                int hmax         = 3; //itapopo: it must be defined by interface. Using 2 just to test
    29452945                this->amr->SetHMax(hmax); //Set max level of refinement
    29462946                this->amr->CreateInitialMesh(numberofvertices,numberofelements,numberofsegments,elementswidth,x,y,z,elements,NULL);
     
    32993299       
    33003300        /*Solutions which will be used to refine the elements*/
    3301         this->GetMaskLevelSet(&masklevelset);//itapopo verificar se já existe um método igual a esse
    3302        
     3301        this->GetGroundediceLevelSet(&masklevelset);//itapopo verificar se já existe um método igual a esse
     3302
    33033303        if(my_rank==0){
    33043304                int type_process=1; //1: it refines father mesh. See AdaptiveMeshRefinement.h (.cpp)
     
    33343334}
    33353335/*}}}*/
    3336 void FemModel::GetMaskLevelSet(IssmDouble **pmasklevelset){/*{{{*/
     3336void FemModel::GetGroundediceLevelSet(IssmDouble **pmasklevelset){/*{{{*/
    33373337
    33383338        int elementswidth               = this->GetElementsWidth();//just 2D mesh, tria elements
     
    33463346        for(int i=0;i<this->elements->Size();i++){
    33473347                Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
    3348                 element->GetInputListOnVertices(elementlevelset,MaskIceLevelsetEnum);
     3348                element->GetInputListOnVertices(elementlevelset,MaskGroundediceLevelsetEnum);
    33493349                element->GetVerticesSidList(elem_vertices);
    33503350                vmasklevelset->SetValue(elem_vertices[0],elementlevelset[0],INS_VAL);
     
    35803580
    35813581        /*Get x and y of the mesh i-1*/
    3582         int my_rank                                             = IssmComm::GetRank();
    35833582        int numberofvertices                    = this->vertices->NumberOfVertices();
    35843583        int numberofelements                    = this->elements->NumberOfElements();
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r21529 r21540  
    152152                int GetElementsWidth(){return 3;};//just tria elements in this first version
    153153                void ExecuteRefinement(int &numberofvertices,int &numberofelements,IssmDouble** px,IssmDouble** py,IssmDouble** pz,int** pelementslist);
    154                 void GetMaskLevelSet(IssmDouble** pmasklevelset);
     154                void GetGroundediceLevelSet(IssmDouble** pmasklevelset);
    155155                void CreateVertices(int newnumberofvertices,int newnumberofelements,int elementswidth,int* newelementslist,int* my_vertices,IssmDouble* newx,IssmDouble* newy,IssmDouble* newz,Vertices* vertices);
    156156                void CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements);
Note: See TracChangeset for help on using the changeset viewer.