Changeset 11324


Ignore:
Timestamp:
02/06/12 08:07:33 (13 years ago)
Author:
Mathieu Morlighem
Message:

Fixed many memory leaks

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp

    r9826 r11324  
    143143        /*Assign output pointers: */
    144144        if(pKff) *pKff=Kff;
     145        else      MatFree(&Kff);
    145146        if(pKfs) *pKfs=Kfs;
     147        else      MatFree(&Kfs);
    146148        if(ppf)  *ppf=pf;
     149        else      VecFree(&pf);
    147150        if(pdf)  *pdf=df;
     151        else      VecFree(&df);
    148152        if(pkmax) *pkmax=kmax;
    149153}
  • issm/trunk-jpl/src/c/solvers/solver_newton.cpp

    r11322 r11324  
    4747        for(;;){
    4848
    49                 //save pointer to old velocity
    5049                VecFree(&old_ug);old_ug=ug;
    5150                VecFree(&old_uf);old_uf=uf;
    5251
     52                /*Solver forward model*/
    5353                SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    5454                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    5555                Reduceloadx(pf,Kfs,ys);MatFree(&Kfs);
    56                 Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);
     56                Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);VecFree(&df);
     57                Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys);
     58                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);VecFree(&ug);
    5759
    58                 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters);
    59 
    60                 CreateJacobianMatrixx(&Jff,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    61 
    62                 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);
    63                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
    64                 SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    65                 VecDuplicate(pf,&pJf);
    66                 MatMultPatch(Kff,uf,pJf);
    67                 VecAXPY(pJf,-1.,pf);
    68                 Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters);
    69                 MatFree(&Kff);VecFree(&pf); VecFree(&df);
    70                 VecAXPY(uf,-1.,duf);
    71                 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys);
    72 
    73                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
    74 
    75                 /*Increase count: */
     60                /*Check convergence*/
     61                convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters);
     62                MatFree(&Kff);VecFree(&pf);
    7663                count++;
    7764                if(converged==true)break;
     
    8067                        break;
    8168                }
     69
     70                /*Prepare next iteration using Newton's method*/
     71                CreateJacobianMatrixx(&Jff,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     72                SystemMatricesx(&Kff,NULL,&pf,NULL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     73                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
     74                VecDuplicate(pf,&pJf);
     75                MatMultPatch(Kff,uf,pJf); MatFree(&Kff);
     76                VecScale(pJf,-1.);
     77                VecAXPY(pJf,+1.,pf);      VecFree(&pf);
     78                Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters);
     79                MatFree(&Jff);            VecFree(&pJf);
     80                VecAXPY(uf,+1.,duf);      VecFree(&duf);
     81                Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys);
     82                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
    8283        }
    8384
Note: See TracChangeset for help on using the changeset viewer.