Changeset 1413


Ignore:
Timestamp:
07/29/09 14:23:13 (16 years ago)
Author:
Mathieu Morlighem
Message:

Added residue convergence criterion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp

    r1265 r1413  
    2020        Vec old_uf=NULL;
    2121        DataSet* loads=NULL;
    22         Vec residue=NULL;
    2322        Vec KU=NULL;
     23        Vec KUF=NULL;
    2424
    2525        /*intermediary: */
     
    3737        Vec dug=NULL;
    3838        double ndu,nduinf,nu;
    39         double nresidue;
     39        double nKUF;
     40        double nF;
     41        double residue;
    4042
    4143        /*parameters:*/
     
    113115
    114116                /*Compute residue*/
     117                //compute KUF = KU - F = K*U - F
    115118                VecDuplicate(uf,&KU); MatMultPatch(Kff,uf,KU);
    116                 VecDuplicate(KU,&residue);VecCopy(KU,residue); VecAYPX(residue,-1.0,pf);
    117                 VecNorm(residue,NORM_2,&nresidue); VecFree(&residue);
     119                VecDuplicate(KU,&KUF);VecCopy(KU,KUF); VecAYPX(KUF,-1.0,pf);
     120                //comput norm(KUF), norm(F) and residue
     121                VecNorm(KUF,NORM_2,&nKUF); VecFree(&KUF);
     122                VecNorm(pf,NORM_2,&nF);
     123                residue=nKUF/nF;
    118124       
    119125                //no need for Kff and pf anymore
     
    137143
    138144                //residue
    139                 if (debug) _printf_("%s%g\n","   Convergence criterion: norm(residue)=",nresidue);
     145                if (debug) _printf_("%s%g\n","   Convergence criterion: norm(KU-F)/norm(F)=",residue);
    140146
    141147                //relative criterion
Note: See TracChangeset for help on using the changeset viewer.