Changeset 21930


Ignore:
Timestamp:
08/10/17 05:13:19 (8 years ago)
Author:
tsantos
Message:

CHG: added gradation option to the adaptive mesh refinement with bamg

Location:
issm/trunk-jpl/src
Files:
8 edited

Legend:

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

    r21919 r21930  
    1717
    1818/*Constructor, copy, clean up and destructor*/
    19 AmrBamg::AmrBamg(IssmDouble hmin,IssmDouble hmax,int fieldenum_in,IssmDouble err_in,int keepmetric_in,
     19AmrBamg::AmrBamg(IssmDouble hmin,IssmDouble hmax,int fieldenum_in,IssmDouble err_in,int keepmetric_in,IssmDouble gradation_in,
    2020                                                IssmDouble groundingline_resolution_in,IssmDouble groundingline_distance_in,
    2121                                                IssmDouble icefront_resolution_in,IssmDouble icefront_distance_in,
     
    4343        this->options->coeff             = 1;
    4444        this->options->errg              = 0.1;
    45         this->options->gradation         = 1.5;
     45        this->options->gradation         = gradation_in;
    4646        this->options->Hessiantype       = 0;
    4747        this->options->maxnbv            = 1e6;
  • issm/trunk-jpl/src/c/classes/AmrBamg.h

    r21919 r21930  
    2525
    2626                /* Constructor, destructor etc*/
    27                 AmrBamg(IssmDouble hmin,IssmDouble hmax,int fieldenum_in,IssmDouble err_in,int keepmetric_in,
     27                AmrBamg(IssmDouble hmin,IssmDouble hmax,int fieldenum_in,IssmDouble err_in,int keepmetric_in,IssmDouble gradation_in,
    2828                        IssmDouble groundingline_resolution_in,IssmDouble groundingline_distance_in,
    2929                  IssmDouble icefront_resolution_in,IssmDouble icefront_distance_in,
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r21919 r21930  
    27202720void FemModel::WriteMeshInResults(void){/*{{{*/
    27212721
    2722         #if defined(_HAVE_NEOPZ_) && !defined(_HAVE_ADOLC_)
     2722        /*Write the erros estimators*/
    27232723        this->WriteErrorEstimatorsInResults();
    2724         #endif
    27252724
    27262725        int step                                        = -1;
     
    44194418        IssmDouble* z             = NULL;
    44204419        int* elements             = NULL;
    4421         IssmDouble hmin,hmax,err;
     4420        IssmDouble hmin,hmax,err,gradation;
    44224421        IssmDouble groundingline_resolution,groundingline_distance,icefront_resolution,icefront_distance;
    44234422        IssmDouble thicknesserror_resolution,thicknesserror_threshold,deviatoricerror_resolution,deviatoricerror_threshold;
     
    44394438        this->parameters->FindParam(&err,AmrErrEnum);
    44404439        this->parameters->FindParam(&keepmetric,AmrKeepMetricEnum);
     4440        this->parameters->FindParam(&gradation,AmrGradationEnum);
    44414441        this->parameters->FindParam(&groundingline_resolution,AmrGroundingLineResolutionEnum);
    44424442        this->parameters->FindParam(&groundingline_distance,AmrGroundingLineDistanceEnum);
     
    44494449
    44504450        /*Create bamg data structures for bamg*/
    4451         this->amrbamg = new AmrBamg(hmin,hmax,fieldenum,err,keepmetric,
     4451        this->amrbamg = new AmrBamg(hmin,hmax,fieldenum,err,keepmetric,gradation,
    44524452                                                                                 groundingline_resolution,groundingline_distance,
    44534453                                                                                 icefront_resolution,icefront_distance,
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r21919 r21930  
    115115                                parameters->AddObject(iomodel->CopyConstantObject("md.amr.err",AmrErrEnum));
    116116                                parameters->AddObject(iomodel->CopyConstantObject("md.amr.keepmetric",AmrKeepMetricEnum));
     117                                parameters->AddObject(iomodel->CopyConstantObject("md.amr.gradation",AmrGradationEnum));
    117118                                parameters->AddObject(iomodel->CopyConstantObject("md.amr.groundingline_resolution",AmrGroundingLineResolutionEnum));
    118119                                parameters->AddObject(iomodel->CopyConstantObject("md.amr.groundingline_distance",AmrGroundingLineDistanceEnum));
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r21919 r21930  
    850850        AmrErrEnum,
    851851        AmrKeepMetricEnum,
     852        AmrGradationEnum,
    852853        AmrGroundingLineResolutionEnum,
    853854        AmrGroundingLineDistanceEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r21919 r21930  
    826826                case AmrErrEnum : return "AmrErr";
    827827                case AmrKeepMetricEnum : return "AmrKeepMetric";
     828                case AmrGradationEnum : return "AmrGradation";
    828829                case AmrGroundingLineResolutionEnum : return "AmrGroundingLineResolution";
    829830                case AmrGroundingLineDistanceEnum : return "AmrGroundingLineDistance";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r21919 r21930  
    844844              else if (strcmp(name,"AmrErr")==0) return AmrErrEnum;
    845845              else if (strcmp(name,"AmrKeepMetric")==0) return AmrKeepMetricEnum;
     846              else if (strcmp(name,"AmrGradation")==0) return AmrGradationEnum;
    846847              else if (strcmp(name,"AmrGroundingLineResolution")==0) return AmrGroundingLineResolutionEnum;
    847848              else if (strcmp(name,"AmrGroundingLineDistance")==0) return AmrGroundingLineDistanceEnum;
     
    874875              else if (strcmp(name,"Hook")==0) return HookEnum;
    875876              else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
    876               else if (strcmp(name,"FileParam")==0) return FileParamEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Input")==0) return InputEnum;
     880              if (strcmp(name,"FileParam")==0) return FileParamEnum;
     881              else if (strcmp(name,"Input")==0) return InputEnum;
    881882              else if (strcmp(name,"IntInput")==0) return IntInputEnum;
    882883              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
     
    997998              else if (strcmp(name,"MinVel")==0) return MinVelEnum;
    998999              else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
    999               else if (strcmp(name,"MinVx")==0) return MinVxEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
     1003              if (strcmp(name,"MinVx")==0) return MinVxEnum;
     1004              else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
    10041005              else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
    10051006              else if (strcmp(name,"MinVy")==0) return MinVyEnum;
  • issm/trunk-jpl/src/m/classes/amrbamg.m

    r21919 r21930  
    1111                err = 0.;
    1212                keepmetric = 0;
     13                gradation = 0.;
    1314                groundingline_resolution = 0.;
    1415                groundingline_distance = 0.;
     
    4243                        self.keepmetric=1;
    4344
     45                        %control of element lengths
     46                        self.gradation=1.5;
     47
    4448                        %other criterias
    4549                        self.groundingline_resolution=500.;
     
    5963                        %md = checkfield(md,'fieldname','amr.fieldname','string',[1]);
    6064                        md = checkfield(md,'fieldname','amr.keepmetric','numel',[1],'>=',0,'<=',1,'NaN',1);
     65                        md = checkfield(md,'fieldname','amr.gradation','numel',[1],'>=',1.1,'<=',5,'NaN',1);
    6166                        md = checkfield(md,'fieldname','amr.groundingline_resolution','numel',[1],'>',0,'<',self.hmax,'NaN',1);
    6267                        md = checkfield(md,'fieldname','amr.groundingline_distance','numel',[1],'>=',0,'NaN',1,'Inf',1);
     
    7580                        fielddisplay(self,'fieldname',['name of input that will be used to compute the metric (should be an input of FemModel)']);
    7681                        fielddisplay(self,'keepmetric',['indicates whether the metric should be kept every remeshing time']);
     82                        fielddisplay(self,'gradation',['maximum ratio between two adjacent edges']);
    7783                        fielddisplay(self,'groundingline_resolution',['element length near the grounding line']);
    7884                        fielddisplay(self,'groundingline_distance',['distance around the grounding line which elements will be refined']);
     
    9399                        WriteData(fid,prefix,'object',self,'class','amr','fieldname','err','format','Double');
    94100                        WriteData(fid,prefix,'object',self,'class','amr','fieldname','keepmetric','format','Integer');
     101                        WriteData(fid,prefix,'object',self,'class','amr','fieldname','gradation','format','Double');
    95102                        WriteData(fid,prefix,'object',self,'class','amr','fieldname','groundingline_resolution','format','Double');
    96103                        WriteData(fid,prefix,'object',self,'class','amr','fieldname','groundingline_distance','format','Double');
Note: See TracChangeset for help on using the changeset viewer.