source: issm/trunk/src/c/modules/InputConvergencex/InputConvergencex.cpp@ 6412

Last change on this file since 6412 was 6412, checked in by Mathieu Morlighem, 14 years ago

moved ISSMERROR to _error_, ISSMASSERT to _assert_ and ISSMPRINTF to _printf_

File size: 1.4 KB
RevLine 
[4055]1/*!\file InputConvergencex
2 */
3
4#include "./InputConvergencex.h"
5#include "../../shared/shared.h"
6#include "../../include/include.h"
7#include "../../toolkits/toolkits.h"
8#include "../../EnumDefinitions/EnumDefinitions.h"
9
[4778]10bool InputConvergencex(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int* enums, int num_enums, int* criterionenums, double* criterionvalues,int num_criterionenums){
[4055]11
12 /*intermediary:*/
[4780]13 int i;
[4879]14 bool converged;
15 int num_notconverged=0;
16 int total_notconverged;
[4780]17 double *eps = NULL;
18 Element* element=NULL;
[4055]19
20 /*allocate dynamic memory: */
21 eps=(double*)xmalloc(num_criterionenums*sizeof(double));
22
23 /*Go through elements, and ask them to do the job: */
24 for(i=0;i<elements->Size();i++){
[4057]25 element=(Element*)elements->GetObjectByOffset(i);
[4879]26 converged=element->InputConvergence(eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums);
27 if(!converged) num_notconverged++;
[4055]28 }
29
30 /*In parallel, we need to gather the converged status: */
31 #ifdef _PARALLEL_
[4879]32 MPI_Allreduce ( (void*)&num_notconverged,(void*)&total_notconverged,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
[4890]33 num_notconverged=total_notconverged;
[4055]34 #endif
[6412]35 _printf_(VerboseConvergence()," #elements above convergence criterion = %i\n",num_notconverged);
[4055]36
37 /*Free ressources:*/
38 xfree((void**)&eps);
39
40 /*return: */
[4890]41 if (num_notconverged){
[4879]42 return false;}
43 else{
[4780]44 return true;}
[4055]45}
Note: See TracBrowser for help on using the repository browser.