Changeset 21540
- Timestamp:
- 02/09/17 17:55:28 (8 years ago)
- Location:
- issm/trunk-jpl/src/c/classes
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/AdaptiveMeshRefinement.cpp
r21528 r21540 180 180 /*Verify the new geometry*/ 181 181 this->CheckMesh(nvertices,nelements,nsegments,this->elementswidth,px,py,pz,pelements,psegments); 182 182 183 _printf_("\trefinement process done!\n\n"); 184 183 185 delete nohangingnodesmesh; 184 186 } … … 187 189 188 190 /*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++){ 190 194 191 195 /*Set elements to be refined using some criteria*/ … … 195 199 /*Refine the mesh*/ 196 200 this->RefineMesh(gmesh, ElemVec); 197 } 198 201 202 _printf_("* "); 203 } 204 _printf_("\n"); 199 205 } 200 206 /*}}}*/ … … 235 241 /*}}}*/ 236 242 void AdaptiveMeshRefinement::RefineMeshToAvoidHangingNodes(TPZGeoMesh *gmesh){/*{{{*/ 237 243 244 _printf_("\trefine to avoid hanging nodes...\n"); 238 245 /*Refine elements to avoid hanging nodes: non-uniform refinement*/ 239 246 const int NElem = gmesh->NElements(); … … 389 396 390 397 // 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! 392 399 393 400 /* Adaptive refinement. This refines some elements following some criteria*/ 394 //this->TagElementsNearGroundingLine(gmesh, GLvec, hlevel, ElemVec);401 this->TagElementsNearGroundingLine(gmesh, GLvec, hlevel, ElemVec); 395 402 396 403 } … … 410 417 411 418 /* Tag elements near grounding line */ 412 double MaxRegion = 20000.; //itapopo413 double alpha = 1.0; //itapopo419 double MaxRegion = 40000.; //itapopo 420 double alpha = log(1.5); //itapopo 414 421 double MaxDistance = MaxRegion / std::exp(alpha*(hlevel-1)); 415 422 -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r21529 r21540 2942 2942 if(my_rank==0){ 2943 2943 this->amr = new AdaptiveMeshRefinement(); 2944 int hmax = 0; //itapopo: it must be defined by interface. Using 2 just to test2944 int hmax = 3; //itapopo: it must be defined by interface. Using 2 just to test 2945 2945 this->amr->SetHMax(hmax); //Set max level of refinement 2946 2946 this->amr->CreateInitialMesh(numberofvertices,numberofelements,numberofsegments,elementswidth,x,y,z,elements,NULL); … … 3299 3299 3300 3300 /*Solutions which will be used to refine the elements*/ 3301 this->Get MaskLevelSet(&masklevelset);//itapopo verificar se já existe um método igual a esse3302 3301 this->GetGroundediceLevelSet(&masklevelset);//itapopo verificar se já existe um método igual a esse 3302 3303 3303 if(my_rank==0){ 3304 3304 int type_process=1; //1: it refines father mesh. See AdaptiveMeshRefinement.h (.cpp) … … 3334 3334 } 3335 3335 /*}}}*/ 3336 void FemModel::Get MaskLevelSet(IssmDouble **pmasklevelset){/*{{{*/3336 void FemModel::GetGroundediceLevelSet(IssmDouble **pmasklevelset){/*{{{*/ 3337 3337 3338 3338 int elementswidth = this->GetElementsWidth();//just 2D mesh, tria elements … … 3346 3346 for(int i=0;i<this->elements->Size();i++){ 3347 3347 Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i)); 3348 element->GetInputListOnVertices(elementlevelset,Mask IceLevelsetEnum);3348 element->GetInputListOnVertices(elementlevelset,MaskGroundediceLevelsetEnum); 3349 3349 element->GetVerticesSidList(elem_vertices); 3350 3350 vmasklevelset->SetValue(elem_vertices[0],elementlevelset[0],INS_VAL); … … 3580 3580 3581 3581 /*Get x and y of the mesh i-1*/ 3582 int my_rank = IssmComm::GetRank();3583 3582 int numberofvertices = this->vertices->NumberOfVertices(); 3584 3583 int numberofelements = this->elements->NumberOfElements(); -
issm/trunk-jpl/src/c/classes/FemModel.h
r21529 r21540 152 152 int GetElementsWidth(){return 3;};//just tria elements in this first version 153 153 void ExecuteRefinement(int &numberofvertices,int &numberofelements,IssmDouble** px,IssmDouble** py,IssmDouble** pz,int** pelementslist); 154 void Get MaskLevelSet(IssmDouble** pmasklevelset);154 void GetGroundediceLevelSet(IssmDouble** pmasklevelset); 155 155 void CreateVertices(int newnumberofvertices,int newnumberofelements,int elementswidth,int* newelementslist,int* my_vertices,IssmDouble* newx,IssmDouble* newy,IssmDouble* newz,Vertices* vertices); 156 156 void CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements);
Note:
See TracChangeset
for help on using the changeset viewer.