Changeset 4879


Ignore:
Timestamp:
07/29/10 11:22:52 (15 years ago)
Author:
Mathieu Morlighem
Message:

fixed default step (1 and not 0)

Location:
issm/trunk/src/c/modules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp

    r4780 r4879  
    1212        /*intermediary:*/
    1313        int         i;
    14         int         converged = 1;
    15         int         node_converged=1;
     14        bool        converged;
     15        int         num_notconverged=0;
     16        int         total_notconverged;
    1617        double     *eps       = NULL;
    17         extern int  my_rank;
    18         int         rank_allowed;
    1918        Element*    element=NULL;
    20         int         verbose=0;
     19        int         verbose;
    2120
    2221        /*retrieve parameters: */
     
    2928        for(i=0;i<elements->Size();i++){
    3029                element=(Element*)elements->GetObjectByOffset(i);
    31                 element->InputConvergence(&converged,eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums);
    32                 if(!converged)break;
     30                converged=element->InputConvergence(eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums);
     31                if(!converged) num_notconverged++;
    3332        }
    3433
    35         if(!converged){
    36                 /*get convergence information to user: */
    37                 if(verbose>2)rank_allowed=my_rank;
    38                 else rank_allowed=0;
    39                 if(my_rank==rank_allowed){
    40                         printf("Convergence info: element %i (and maybe others) did not converge for inputs:",element->Id());
    41                         for(i=0;i<num_enums-1;i++)printf(" %s,",EnumAsString(enums[i])); printf(" %s\n",EnumAsString(enums[num_enums-1]));
    42                         printf("                  convergence criterions: ");
    43                         for(i=0;i<num_criterionenums;i++) printf("%s: %g/%g ",EnumAsString(criterionenums[i]),eps[i],criterionvalues[i]);
    44                         printf("\n");
    45                 }
    46         }
    47        
    4834        /*In parallel, we need to gather the converged status: */
    4935        #ifdef _PARALLEL_
    50         MPI_Reduce (&converged,&node_converged,1,MPI_INT,MPI_MIN,0,MPI_COMM_WORLD );
    51         MPI_Bcast(&node_converged,1,MPI_INT,0,MPI_COMM_WORLD);   
    52         converged=node_converged;
     36        MPI_Allreduce ( (void*)&num_notconverged,(void*)&total_notconverged,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
    5337        #endif
     38        _printf_("      #elements above convergence criterion = %i\n",total_notconverged);
    5439
    5540        /*Free ressources:*/
     
    5742
    5843        /*return: */
    59         if (converged){
     44        if (total_notconverged){
     45                return false;}
     46        else{
    6047                return true;}
    61         else{
    62                 return false;}
    6348}
  • issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h

    r4873 r4879  
    1616#ifdef _SERIAL_
    1717#include <mex.h>
    18 void OutputResultsx(mxArray** pdataref, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters,DataSet** results,int step=0,double time=0);
     18void OutputResultsx(mxArray** pdataref, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters,DataSet** results,int step=1,double time=0);
    1919void MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results);
    2020#else
    21 void OutputResultsx(Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters,DataSet** results,int step=0,double time=0);
     21void OutputResultsx(Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters,DataSet** results,int step=1,double time=0);
    2222void FileWriteResults(Parameters* parameters, DataSet* results);
    2323#endif
Note: See TracChangeset for help on using the changeset viewer.