Changeset 60


Ignore:
Timestamp:
04/27/09 10:45:35 (16 years ago)
Author:
Mathieu Morlighem
Message:

Added absolute convergence criterion on cielo parallel

Location:
issm/trunk/src/c
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/CreateConstraintsDiagnosticHoriz.cpp

    r1 r60  
    3535        /*Create constraints: */
    3636        constraints = new DataSet(ConstraintsEnum());
    37 
    3837
    3938        /*Fetch data: */
  • issm/trunk/src/c/ModelProcessorx/ModelCreateParameters.cpp

    r1 r60  
    6060        parameters->AddObject(param);
    6161
     62        /*yts: */
     63        count++;
     64        param= new Param(count,"yts",DOUBLE);
     65        param->SetDouble(model->yts);
     66        parameters->AddObject(param);
     67
    6268        /*dt: */
    6369        count++;
  • issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp

    r54 r60  
    3333
    3434        Vec dug;
    35         double ndu,nu;
     35        double ndu,nduinf,nu;
    3636
    3737        /*parameters:*/
     
    4040        char* solver_string=NULL;
    4141        int debug=0;
    42         double eps_rel;
     42        double eps_rel,eps_abs,yts;
    4343
    4444        /*Recover parameters: */
     
    4949        fem->parameters->FindParam((void*)&solver_string,"solverstring");
    5050        fem->parameters->FindParam((void*)&eps_rel,"eps_rel");
     51        fem->parameters->FindParam((void*)&eps_abs,"eps_abs");
     52        fem->parameters->FindParam((void*)&yts,"yts");
    5153        fem->parameters->FindParam((void*)&debug,"debug");
    5254        fem->parameters->FindParam((void*)&analysis_type,"analysis_type");
     
    115117                if(count>=2){
    116118                        VecDuplicate(old_ug,&dug);VecCopy(old_ug,dug); VecAYPX(dug,-1.0,ug);
    117                         VecNorm(dug,NORM_2,&ndu); VecNorm(ug,NORM_2,&nu);VecFree(&dug);
    118 
     119                        VecNorm(dug,NORM_2,&ndu);VecNorm(old_ug,NORM_2,&nu);VecNorm(dug,NORM_INFINITY,&nduinf); VecFree(&dug);
    119120
    120121                        if((ndu/nu)<eps_rel){
    121                                 if (constraints_converged) converged=1;
     122                                if(isnan(eps_abs) | (nduinf*yts)<eps_abs){
     123                                        if (constraints_converged) converged=1;
     124                                }
    122125                        }
    123126               
    124127                        if (debug){
    125128                                _printf_("%s%g%s%g\n","   Convergence criterion: norm(du)/norm(u)=",ndu/nu," > ",eps_rel);
     129                        }
     130
     131                        if (debug & !isnan(eps_abs)){
     132                                _printf_("%s%g%s%g\n","   Convergence criterion: max(du)=",nduinf*yts," > ",eps_abs);
    126133                        }
    127134                }
Note: See TracChangeset for help on using the changeset viewer.