Changeset 23672


Ignore:
Timestamp:
01/31/19 13:25:38 (6 years ago)
Author:
youngmc3
Message:

CHG: fixing memory leak

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

Legend:

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

    r23652 r23672  
    14271427                int         numiceverts;
    14281428                IssmDouble  s[2],x[2],y[2];
    1429                 int        *indices = NULL;
    14301429                this->GetLevelsetIntersection(&indices, &numiceverts,&s[0],MaskIceLevelsetEnum,0.);
    14311430                _assert_(numiceverts);
     
    14661465                x1=x[0]; y1=y[0]; x2=x[1]; y2=y[1];
    14671466                distance=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
     1467               
     1468                int numthk=numiceverts+2;
     1469                H=xNew<IssmDouble>(numthk);
     1470                for(int iv=0;iv<NUMVERTICES;iv++) Haux[iv]=-bed[indices[iv]]; //sort bed in ice/noice
     1471
     1472                switch(numiceverts){
     1473                        case 1: // average over triangle
     1474                                H[0]=Haux[0];
     1475                                H[1]=Haux[0]+s[0]*(Haux[1]-Haux[0]);
     1476                                H[2]=Haux[0]+s[1]*(Haux[2]-Haux[0]);
     1477                                Haverage=(H[1]+H[2])/2;
     1478                                break;
     1479                        case 2: // average over quadrangle
     1480                                H[0]=Haux[0];
     1481                                H[1]=Haux[1];
     1482                                H[2]=Haux[0]+s[0]*(Haux[2]-Haux[0]);
     1483                                H[3]=Haux[1]+s[1]*(Haux[2]-Haux[1]);
     1484                                Haverage=(H[2]+H[3])/2;
     1485                                break;
     1486                        default:
     1487                                _error_("Number of ice covered vertices wrong in Tria::GetIceFrontArea(void)");
     1488                                break;
     1489                }
     1490                frontarea=distance*Haverage;
    14681491        }
    14691492        else return 0; 
    14701493       
    1471         IssmDouble s[2]; // s:fraction of intersected triangle edges, that lies inside ice
    1472         this->GetLevelsetIntersection(&indices, &numiceverts, s, MaskIceLevelsetEnum, 0.);     
    1473         int numthk=numiceverts+2;
    1474         H=xNew<IssmDouble>(numthk);
    1475         for(int iv=0;iv<NUMVERTICES;iv++) Haux[iv]=-bed[indices[iv]]; //sort bed in ice/noice
    1476 
    1477         switch(numiceverts){
    1478                 case 1: // average over triangle
    1479                         H[0]=Haux[0];
    1480                         H[1]=Haux[0]+s[0]*(Haux[1]-Haux[0]);
    1481                         H[2]=Haux[0]+s[1]*(Haux[2]-Haux[0]);
    1482                         Haverage=(H[1]+H[2])/2;
    1483                         break;
    1484                 case 2: // average over quadrangle
    1485                         H[0]=Haux[0];
    1486                         H[1]=Haux[1];
    1487                         H[2]=Haux[0]+s[0]*(Haux[2]-Haux[0]);
    1488                         H[3]=Haux[1]+s[1]*(Haux[2]-Haux[1]);
    1489                         Haverage=(H[2]+H[3])/2;
    1490                         break;
    1491                 default:
    1492                         _error_("Number of ice covered vertices wrong in Tria::GetIceFrontArea(void)");
    1493                         break;
    1494         }
    1495         frontarea=distance*Haverage;
     1494        xDelete<int>(indices);
     1495        xDelete<IssmDouble>(H);
     1496       
    14961497        _assert_(frontarea>0);
    14971498        return frontarea;
     
    34083409                if(xIsNan<IssmDouble>(meltrates[iv])) _error_("NaN found in vector");
    34093410                if(xIsInf<IssmDouble>(meltrates[iv])) _error_("Inf found in vector");
     3411               
    34103412        }
    34113413
     
    34143416   
    34153417        /*Cleanup and return*/
     3418        xDelete<IssmDouble>(basin_icefront_area);
    34163419        delete gauss;
    34173420}
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r23652 r23672  
    15271527       
    15281528        xDelete<IssmDouble>(basin_icefront_area);
     1529        xDelete<IssmDouble>(BasinId);
    15291530}/*}}}*/
    15301531void FemModel::IceMassx(IssmDouble* pM, bool scaled){/*{{{*/
Note: See TracChangeset for help on using the changeset viewer.