Ignore:
Timestamp:
11/26/17 10:52:08 (7 years ago)
Author:
tsantos
Message:

CHG: delete unused variable in AMR (radius_level_max); simplifying some AMR methods.

File:
1 edited

Legend:

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

    r22241 r22276  
    3232        this->refinement_type                           = cp.refinement_type;
    3333        this->level_max                                         = cp.level_max;
    34         this->radius_level_max                          = cp.radius_level_max;
    3534        this->gradation                                         = cp.gradation;
    3635        this->lag                                                               = cp.lag;
     
    3938        this->thicknesserror_threshold  = cp.thicknesserror_threshold;
    4039        this->deviatoricerror_threshold = cp.deviatoricerror_threshold;
    41         this->max_deviatoricerror                       = cp.max_deviatoricerror;
    42         this->max_thicknesserror                        = cp.max_thicknesserror;
     40        this->deviatoricerror_maximum           = cp.deviatoricerror_maximum;
     41        this->thicknesserror_maximum            = cp.thicknesserror_maximum;
    4342        this->sid2index.clear();
    4443        this->sid2index.resize(cp.sid2index.size());
     
    6665        this->refinement_type                           = -1;
    6766        this->level_max                                         = -1;
    68         this->radius_level_max                          = -1;
    6967        this->gradation                                         = -1;
    7068        this->lag                                                               = -1;
     
    7371        this->thicknesserror_threshold  = -1;
    7472        this->deviatoricerror_threshold = -1;
    75         this->max_deviatoricerror                       = -1;
    76         this->max_thicknesserror                        = -1;
     73        this->deviatoricerror_maximum           = -1;
     74        this->thicknesserror_maximum            = -1;
    7775        this->sid2index.clear();
    7876        this->index2sid.clear();
     
    8785        this->refinement_type                           = -1;
    8886        this->level_max                                         = -1;
    89         this->radius_level_max                          = -1;
    9087        this->gradation                                         = -1;
    9188        this->lag                                                               = -1;
     
    9491        this->thicknesserror_threshold  = -1;
    9592        this->deviatoricerror_threshold = -1;
    96         this->max_deviatoricerror                       = -1;
    97         this->max_thicknesserror                        = -1;
     93        this->deviatoricerror_maximum           = -1;
     94        this->thicknesserror_maximum            = -1;
    9895        this->sid2index.clear();
    9996        this->index2sid.clear();
     
    139136        int numberofcriteria                            =-1;
    140137        int nconformelements                            = this->sid2index.size();
    141         double gl_radius_h                              =-1;
    142         double gl_radius_hmax                   = std::max(this->radius_level_max,this->groundingline_distance);
    143         double if_radius_h                              =-1;
    144         double if_radius_hmax                   = std::max(this->radius_level_max,this->icefront_distance);
     138        double gl_distance_h                            =-1;
     139        double gl_distance_hmax                 = this->groundingline_distance;
     140        double if_distance_h                            =-1;
     141        double if_distance_hmax                 = this->icefront_distance;
    145142        double gl_groupdistance                 =-1;
    146143        double if_groupdistance                 =-1;
     
    163160
    164161        /*Calculate the maximum of the estimators, if requested{{{*/
    165         if(this->deviatoricerror_threshold>0 && this->max_deviatoricerror<0){
    166                 for(int i=0;i<nconformelements;i++) this->max_deviatoricerror=max(this->max_deviatoricerror,deviatoricerror[i]);
    167         }
    168         if(this->thicknesserror_threshold>0 && this->max_thicknesserror<0){
    169                 for(int i=0;i<nconformelements;i++) this->max_thicknesserror=max(this->max_thicknesserror,thicknesserror[i]);
     162        if(this->deviatoricerror_threshold>0 && this->deviatoricerror_maximum<DBL_EPSILON){
     163                for(int i=0;i<nconformelements;i++) this->deviatoricerror_maximum=max(this->deviatoricerror_maximum,deviatoricerror[i]);
     164        }
     165        if(this->thicknesserror_threshold>0 && this->thicknesserror_maximum<DBL_EPSILON){
     166                for(int i=0;i<nconformelements;i++) this->thicknesserror_maximum=max(this->thicknesserror_maximum,thicknesserror[i]);
    170167        }
    171168        /*}}}*/
     
    181178                gmesh->Element(this->specialelementsindex[i])->Father()->GetHigherSubElements(sons);
    182179                /*Limits*/
    183                 gl_radius_h = gl_radius_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(this->specialelementsindex[i])->Level());
    184                 if_radius_h = if_radius_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(this->specialelementsindex[i])->Level());
    185                 d_maxerror      = this->deviatoricerror_threshold*this->max_deviatoricerror;
    186                 t_maxerror      = this->thicknesserror_threshold*this->max_thicknesserror;
     180                gl_distance_h   = gl_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(this->specialelementsindex[i])->Level());
     181                if_distance_h   = if_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(this->specialelementsindex[i])->Level());
     182                d_maxerror              = this->deviatoricerror_threshold*this->deviatoricerror_maximum;
     183                t_maxerror              = this->thicknesserror_threshold*this->thicknesserror_maximum;
    187184                /*Calculate the distance and error of the group (sons)*/
    188185                gl_groupdistance=INFINITY;if_groupdistance=INFINITY;deviatoric_grouperror=0;thickness_grouperror=0;
     
    196193                }       
    197194                criteria=0;
    198                 if(this->groundingline_distance>0               && gl_groupdistance<gl_radius_h)                        criteria++;
    199                 if(this->icefront_distance>0                            && if_groupdistance<if_radius_h)                        criteria++;
    200                 if(this->deviatoricerror_threshold>0    && deviatoric_grouperror>d_maxerror)    criteria++;
    201                 if(this->thicknesserror_threshold>0             && thickness_grouperror>t_maxerror)             criteria++;
     195                if(this->groundingline_distance>0               && gl_groupdistance<gl_distance_h+DBL_EPSILON)          criteria++;
     196                if(this->icefront_distance>0                            && if_groupdistance<if_distance_h+DBL_EPSILON)          criteria++;
     197                if(this->deviatoricerror_threshold>0    && deviatoric_grouperror>d_maxerror-DBL_EPSILON)        criteria++;
     198                if(this->thicknesserror_threshold>0             && thickness_grouperror>t_maxerror-DBL_EPSILON)         criteria++;
    202199                /*Finally, it keeps the father index if it must be refine*/
    203200                if(criteria) index.push_back(gmesh->Element(this->specialelementsindex[i])->FatherIndex());
     
    230227                if(!gmesh->Element(i)->Father()) _error_("father is NULL!\n");
    231228                /*Limits with lag*/
    232                 gl_radius_h = this->lag*gl_radius_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(i)->Level());
    233                 if_radius_h = this->lag*if_radius_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(i)->Level());
    234                 d_maxerror      = 0.05*this->max_deviatoricerror;//itapopo definir melhor
    235                 t_maxerror      = 0.05*this->max_thicknesserror;//itapopo definir melhor
     229                gl_distance_h = this->lag*gl_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(i)->Level());
     230                if_distance_h = this->lag*if_distance_hmax*std::pow(this->gradation,this->level_max-gmesh->Element(i)->Level());
     231                d_maxerror        = 0.01*this->deviatoricerror_maximum;//itapopo definir melhor 0.05
     232                t_maxerror        = 0.01*this->thicknesserror_maximum;//itapopo definir melhor 0.05
    236233                /*Get the sons of the father (sibilings)*/     
    237234                sons.clear();
     
    252249                /*Verify the criteria*/
    253250                criteria=0;
    254                 if(this->groundingline_distance>0               && gl_groupdistance>gl_radius_h)                        criteria++;
    255                 if(this->icefront_distance>0                            && if_groupdistance>if_radius_h)                        criteria++;
    256                 if(this->deviatoricerror_threshold>0    && deviatoric_grouperror<d_maxerror)    criteria++;
    257                 if(this->thicknesserror_threshold>0             && thickness_grouperror<t_maxerror)             criteria++;
     251                if(this->groundingline_distance>0               && gl_groupdistance>gl_distance_h-DBL_EPSILON)          criteria++;
     252                if(this->icefront_distance>0                            && if_groupdistance>if_distance_h-DBL_EPSILON)          criteria++;
     253                if(this->deviatoricerror_threshold>0    && deviatoric_grouperror<d_maxerror+DBL_EPSILON)        criteria++;
     254                if(this->thicknesserror_threshold>0             && thickness_grouperror<t_maxerror+DBL_EPSILON)         criteria++;
    258255                /*Now, if the group attends the criteria, unrefine it*/
    259256                if(criteria==numberofcriteria){
     
    280277                sid=this->index2sid[gmesh->Element(i)->Index()];
    281278                if(sid<0) continue;
    282                 /*Filter: set the region/radius for level h*/
    283                 gl_radius_h     = gl_radius_hmax*std::pow(this->gradation,this->level_max-(gmesh->Element(i)->Level()+1));//+1, current element level is <level_max
    284                 if_radius_h     = if_radius_hmax*std::pow(this->gradation,this->level_max-(gmesh->Element(i)->Level()+1));//+1, current element level is <level_max
    285                 d_maxerror      = this->deviatoricerror_threshold*this->max_deviatoricerror;
    286                 t_maxerror      = this->thicknesserror_threshold*this->max_thicknesserror;
     279                /*Set the distance for level h*/
     280                gl_distance_h   = gl_distance_hmax*std::pow(this->gradation,this->level_max-(gmesh->Element(i)->Level()+1));//+1: current element level is <level_max
     281                if_distance_h   = if_distance_hmax*std::pow(this->gradation,this->level_max-(gmesh->Element(i)->Level()+1));//+1: current element level is <level_max
     282                d_maxerror              = this->deviatoricerror_threshold*this->deviatoricerror_maximum;
     283                t_maxerror              = this->thicknesserror_threshold*this->thicknesserror_maximum;
    287284                /*Verify distance and error of the element, if requested*/
    288285                criteria=0;
    289                 if(this->groundingline_distance>0               && gl_distance[sid]<gl_radius_h)                criteria++;
    290                 if(this->icefront_distance>0                            && if_distance[sid]<if_radius_h)                criteria++;
    291                 if(this->deviatoricerror_threshold>0    && deviatoricerror[sid]>d_maxerror)     criteria++;
    292                 if(this->thicknesserror_threshold>0             && thicknesserror[sid]>t_maxerror)      criteria++;
     286                if(this->groundingline_distance>0               && gl_distance[sid]<gl_distance_h+DBL_EPSILON)  criteria++;
     287                if(this->icefront_distance>0                            && if_distance[sid]<if_distance_h+DBL_EPSILON)  criteria++;
     288                if(this->deviatoricerror_threshold>0    && deviatoricerror[sid]>d_maxerror-DBL_EPSILON) criteria++;
     289                if(this->thicknesserror_threshold>0             && thicknesserror[sid]>t_maxerror-DBL_EPSILON)  criteria++;
    293290                /*Now, if it attends any criterion, keep the element index to refine in next step*/
    294291                if(criteria)index.push_back(i);
Note: See TracChangeset for help on using the changeset viewer.