Changeset 14416


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

FIX: commited wrong file

File:
1 edited

Legend:

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

    r14415 r14416  
    1515        /*intermediary: */
    1616        bool   converged;
    17         int    count;
     17        int    count,newton;
    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);
    3940        femmodel->UpdateConstraintsx();
    4041
     
    5657
    5758                /*Solver forward model*/
    58                 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
     59                if(count==1 || newton==2){
     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);
    5973                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    6074                Reduceloadx(pf,Kfs,ys);xdelete(&Kfs);
    61                 Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df);
     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);
    6283                Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
    63                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug);
     84                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
    6485
    6586                /*Check convergence*/
     
    82103                }
    83104
    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 
    98105                count++;
    99106        }
Note: See TracChangeset for help on using the changeset viewer.