Changeset 25389


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

CHG: fixing AMR with bamg

Location:
issm/trunk-jpl/src/c
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/bamg/BamgOpts.cpp

    r25380 r25389  
    7777}
    7878/*}}}*/
     79void BamgOpts::Echo(){/*{{{*/
     80
     81        _printf_("anisomax: "    << this->anisomax<<"\n");
     82        _printf_("cutoff: "      << this->cutoff<<"\n");
     83        _printf_("coeff: "       << this->coeff<<"\n");
     84        _printf_("errg: "        << this->errg<<"\n");
     85        _printf_("gradation: "   << this->gradation<<"\n");
     86        _printf_("Hessiantype: " << this->Hessiantype<<"\n");
     87        _printf_("maxnbv: "      << this->maxnbv<<"\n");
     88        _printf_("maxsubdiv: "   << this->maxsubdiv<<"\n");
     89        _printf_("Metrictype: "  << this->Metrictype<<"\n");
     90        _printf_("nbjacobi: "    << this->nbjacobi<<"\n");
     91        _printf_("nbsmooth: "    << this->nbsmooth<<"\n");
     92        _printf_("omega: "       << this->omega<<"\n");
     93        _printf_("power: "       << this->power<<"\n");
     94        _printf_("verbose: "     << this->verbose<<"\n");
     95   _printf_("\n"<<"\n");
     96        _printf_("Crack: "        << this->Crack<<"\n");
     97        _printf_("KeepVertices: " << this->KeepVertices<<"\n");
     98        _printf_("splitcorners: " << this->splitcorners<<"\n");
     99
     100        _printf_("hmin: "<<this->hmin<<"\n");
     101        _printf_("hmax: "<<this->hmax<<"\n");
     102   _printf_("hVerticesLength: "  << this->hVerticesLength     << "\n");
     103   _printf_("hminVerticesSize: " << this->hminVerticesSize[0] << "x"    << this->hminVerticesSize[1] << "\n");
     104   _printf_("hmaxVerticesSize: " << this->hmaxVerticesSize[0] << "x"    << this->hmaxVerticesSize[1] << "\n");
     105   _printf_("metricSize: "       << this->metricSize[0]       << "x"    << this->metricSize[1]       << "\n");
     106   _printf_("fieldSize: "        << this->fieldSize[0]        << "x"    << this->fieldSize[1]        << "\n");
     107   _printf_("errSize: "          << this->errSize[0]          << "x"    << this->errSize[1]          << "\n");
     108
     109}
     110/*}}}*/
  • issm/trunk-jpl/src/c/bamg/BamgOpts.h

    r24113 r25389  
    5151
    5252                void Check(void);
     53                void Echo(void);
    5354
    5455};
  • issm/trunk-jpl/src/c/bamg/Mesh.cpp

    r25388 r25389  
    10071007                int Hessiantype=bamgopts->Hessiantype;
    10081008
    1009                 /*Check err, we need to make sure it has the right size!*/
    1010                 if(bamgopts->errSize[0]==1){
    1011                         /*Let's copy this value for all vertices*/
    1012                         double* newerr =  new double[nbv*bamgopts->errSize[1]];
    1013                         for(int i=0;i<nbv;i++){
    1014                                 for(int j=0;j<bamgopts->errSize[1];j++){
    1015                                         newerr[i*bamgopts->errSize[1]+j] = bamgopts->err[j];
    1016                                 }
    1017                         }
    1018                         delete bamgopts->err;
    1019                         bamgopts->err = newerr;
    1020                         bamgopts->errSize[0] = nbv;
    1021                 }
    1022                 else if(bamgopts->errSize[0]==this->nbv){
    1023                         /*Nothing to do, already right size*/
    1024                 }
    1025                 else{
    1026                         _error_("number of rows in 'err' not supported");
    1027                 }
    1028 
    10291009                if (Hessiantype==0){
    10301010                        BuildMetric0(bamgopts);
     
    17581738                }
    17591739
    1760                 //for all Solutions
     1740                /*Check err, we need to make sure it has the right size!*/
     1741                bool    deleteerr = false;
     1742                double* err       = NULL;
     1743                if(bamgopts->errSize[0]==1){
     1744                        /*Let's copy this value for all vertices*/
     1745                        err =  new double[nbv*bamgopts->errSize[1]];
     1746                        for(int i=0;i<nbv;i++){
     1747                                for(int j=0;j<bamgopts->errSize[1];j++){
     1748                                        err[i*bamgopts->errSize[1]+j] = bamgopts->err[j];
     1749                                }
     1750                        }
     1751                        //delete bamgopts->err;
     1752                        //bamgopts->err = newerr;
     1753                        //bamgopts->errSize[0] = nbv;
     1754                        deleteerr = true;
     1755                }
     1756                else if(bamgopts->errSize[0]==this->nbv){
     1757                        /*Nothing to do, already right size*/
     1758                        err = bamgopts->err;
     1759                }
     1760                else{
     1761                        _error_("number of rows in 'err' not supported: size "<<bamgopts->errSize[0]<<"x"<<bamgopts->errSize[1]<<" (nbv is "<<this->nbv<<")");
     1762                }
     1763
     1764                /*for all Solutions*/
    17611765                for (int nusol=0;nusol<nbsol;nusol++) {
    17621766                        double smin=ss[nusol],smax=ss[nusol];
     
    18381842
    18391843                        /*Compute Metric from Hessian*/
    1840                         for ( iv=0;iv<nbv;iv++){
    1841                                 vertices[iv].MetricFromHessian(dxdx_vertex[iv],dxdy_vertex[iv],dydy_vertex[iv],smin,smax,ss[iv*nbsol+nusol],bamgopts->err[iv*nbsol+nusol],bamgopts);
     1844                        for(iv=0;iv<nbv;iv++){
     1845                                vertices[iv].MetricFromHessian(dxdx_vertex[iv],dxdy_vertex[iv],dydy_vertex[iv],smin,smax,ss[iv*nbsol+nusol],err[iv*nbsol+nusol],bamgopts);
    18421846                        }
    18431847
     
    18611865                delete [] dxdy_vertex;
    18621866                delete [] dydy_vertex;
     1867                if(deleteerr) delete [] err;
    18631868        }
    18641869        /*}}}*/
     
    19671972                        //else: the triangle is a boundary triangle -> workT=-1
    19681973                        else workT[i]=-1;
     1974                }
     1975
     1976                /*Check err, we need to make sure it has the right size!*/
     1977                bool    deleteerr = false;
     1978                double* err       = NULL;
     1979                if(bamgopts->errSize[0]==1){
     1980                        /*Let's copy this value for all vertices*/
     1981                        err =  new double[nbv*bamgopts->errSize[1]];
     1982                        for(int i=0;i<nbv;i++){
     1983                                for(int j=0;j<bamgopts->errSize[1];j++){
     1984                                        err[i*bamgopts->errSize[1]+j] = bamgopts->err[j];
     1985                                }
     1986                        }
     1987                        //delete bamgopts->err;
     1988                        //bamgopts->err = newerr;
     1989                        //bamgopts->errSize[0] = nbv;
     1990                        deleteerr = true;
     1991                }
     1992                else if(bamgopts->errSize[0]==this->nbv){
     1993                        /*Nothing to do, already right size*/
     1994                        err = bamgopts->err;
     1995                }
     1996                else{
     1997                        _error_("number of rows in 'err' not supported: size "<<bamgopts->errSize[0]<<"x"<<bamgopts->errSize[1]<<" (nbv is "<<this->nbv<<")");
    19691998                }
    19701999
     
    21632192                delete [] Mmassxx;
    21642193                delete [] OnBoundary;
     2194                if(deleteerr) delete [] err;
    21652195
    21662196        }
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r25379 r25389  
    54835483        this->parameters->FindParam(&this->amrbamg->deviatoricerror_groupthreshold,AmrDeviatoricErrorGroupThresholdEnum);
    54845484        this->parameters->FindParam(&this->amrbamg->deviatoricerror_maximum,AmrDeviatoricErrorMaximumEnum);
     5485
    54855486        /*Set BamgOpts*/
    54865487        this->amrbamg->SetBamgOpts(hmin,hmax,err,gradation);
Note: See TracChangeset for help on using the changeset viewer.