Changeset 4879
- Timestamp:
- 07/29/10 11:22:52 (15 years ago)
- Location:
- issm/trunk/src/c/modules
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp
r4780 r4879 12 12 /*intermediary:*/ 13 13 int i; 14 int converged = 1; 15 int node_converged=1; 14 bool converged; 15 int num_notconverged=0; 16 int total_notconverged; 16 17 double *eps = NULL; 17 extern int my_rank;18 int rank_allowed;19 18 Element* element=NULL; 20 int verbose =0;19 int verbose; 21 20 22 21 /*retrieve parameters: */ … … 29 28 for(i=0;i<elements->Size();i++){ 30 29 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++; 33 32 } 34 33 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 48 34 /*In parallel, we need to gather the converged status: */ 49 35 #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); 53 37 #endif 38 _printf_(" #elements above convergence criterion = %i\n",total_notconverged); 54 39 55 40 /*Free ressources:*/ … … 57 42 58 43 /*return: */ 59 if (converged){ 44 if (total_notconverged){ 45 return false;} 46 else{ 60 47 return true;} 61 else{62 return false;}63 48 } -
issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h
r4873 r4879 16 16 #ifdef _SERIAL_ 17 17 #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);18 void OutputResultsx(mxArray** pdataref, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,DataSet** results,int step=1,double time=0); 19 19 void MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results); 20 20 #else 21 void OutputResultsx(Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,DataSet** results,int step= 0,double time=0);21 void OutputResultsx(Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,DataSet** results,int step=1,double time=0); 22 22 void FileWriteResults(Parameters* parameters, DataSet* results); 23 23 #endif
Note:
See TracChangeset
for help on using the changeset viewer.