Changeset 14415


Ignore:
Timestamp:
02/28/13 08:59:05 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: reimplemented newton 2, where deltav is applied to the stiffness matrix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/solvers/solver_newton.cpp

    r14414 r14415  
    1515        /*intermediary: */
    1616        bool   converged;
    17         int    count,newton;
     17        int    count;
    1818        IssmDouble kmax;
    1919        Matrix<IssmDouble>* Kff = NULL;
     
    3737        femmodel->parameters->FindParam(&max_nonlinear_iterations,DiagnosticMaxiterEnum);
    3838        femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
    39         femmodel->parameters->FindParam(&newton,DiagnosticIsnewtonEnum);
    4039        femmodel->UpdateConstraintsx();
    4140
     
    5756
    5857                /*Solver forward model*/
    59                 if(count==1){
    60                         femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
    61                         CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    62                         Reduceloadx(pf,Kfs,ys);xdelete(&Kfs);
    63                         Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df);
    64                         Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
    65                         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug);
    66                         xdelete(&old_ug);old_ug=ug;
    67                         xdelete(&old_uf);old_uf=uf;
    68                 }
    69                 uf=old_uf->Duplicate(); old_uf->Copy(uf);
    70 
    71                 /*Prepare next iteration using Newton's method*/
    72                 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);xdelete(&df);
     58                femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
    7359                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    74                 Reduceloadx(pf,Kfs,ys);   xdelete(&Kfs);
    75 
    76                 pJf=pf->Duplicate();
    77                 Kff->MatMult(uf,pJf);// xdelete(&Kff);
    78                 pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);     //xdelete(&pf);
    79 
    80                 femmodel->CreateJacobianMatrixx(&Jff,kmax);
    81                 Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf);
    82                 uf->AXPY(duf, 1.0); xdelete(&duf);
     60                Reduceloadx(pf,Kfs,ys);xdelete(&Kfs);
     61                Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df);
    8362                Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
    84                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
     63                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug);
    8564
    8665                /*Check convergence*/
     
    10382                }
    10483
     84                /*Prepare next iteration using Newton's method*/
     85                femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
     86                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
     87                Reduceloadx(pf,Kfs,ys);   xdelete(&Kfs);
     88
     89                pJf=pf->Duplicate(); Kff->MatMult(uf,pJf); xdelete(&Kff);
     90                pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);     xdelete(&pf);
     91
     92                femmodel->CreateJacobianMatrixx(&Jff,kmax);
     93                Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf);
     94                uf->AXPY(duf, 1.0); xdelete(&duf);
     95                Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
     96                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
     97
    10598                count++;
    10699        }
Note: See TracChangeset for help on using the changeset viewer.