/*!\file InputConvergencex */ #include "./InputConvergencex.h" #include "../../shared/shared.h" #include "../../include/include.h" #include "../../toolkits/toolkits.h" #include "../../EnumDefinitions/EnumDefinitions.h" bool 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){ /*intermediary:*/ int i; int converged = 1; int node_converged=1; double *eps = NULL; extern int my_rank; int rank_allowed; Element* element=NULL; int verbose=0; /*retrieve parameters: */ parameters->FindParam(&verbose,VerboseEnum); /*allocate dynamic memory: */ eps=(double*)xmalloc(num_criterionenums*sizeof(double)); /*Go through elements, and ask them to do the job: */ for(i=0;iSize();i++){ element=(Element*)elements->GetObjectByOffset(i); element->InputConvergence(&converged,eps,enums,num_enums,criterionenums,criterionvalues,num_criterionenums); if(!converged)break; } if(!converged){ /*get convergence information to user: */ if(verbose>2)rank_allowed=my_rank; else rank_allowed=0; if(my_rank==rank_allowed){ printf("Convergence info: element %i (and maybe others) did not converge for inputs:",element->Id()); for(i=0;i