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

Last change on this file since 4879 was 4879, checked in by Mathieu Morlighem, 15 years ago

fixed default step (1 and not 0)

File size: 1.5 KB
Line 
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
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){
11
12 /*intermediary:*/
13 int i;
14 bool converged;
15 int num_notconverged=0;
16 int total_notconverged;
17 double *eps = NULL;
18 Element* element=NULL;
19 int verbose;
20
21 /*retrieve parameters: */
22 parameters->FindParam(&verbose,VerboseEnum);
23
24 /*allocate dynamic memory: */
25 eps=(double*)xmalloc(num_criterionenums*sizeof(double));
26
27 /*Go through elements, and ask them to do the job: */
28 for(i=0;i<elements->Size();i++){
29 element=(Element*)elements->GetObjectByOffset(i);
30 converged=element->InputConvergence(eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums);
31 if(!converged) num_notconverged++;
32 }
33
34 /*In parallel, we need to gather the converged status: */
35 #ifdef _PARALLEL_
36 MPI_Allreduce ( (void*)&num_notconverged,(void*)&total_notconverged,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
37 #endif
38 _printf_(" #elements above convergence criterion = %i\n",total_notconverged);
39
40 /*Free ressources:*/
41 xfree((void**)&eps);
42
43 /*return: */
44 if (total_notconverged){
45 return false;}
46 else{
47 return true;}
48}
Note: See TracBrowser for help on using the repository browser.